我希望能够在来电时启动短视频。视频将循环播放,直到应答呼叫为止。我已将视频加载到模拟器SD卡上,然后创建了适当的级别avd,其中包含磁盘上sdcard.iso文件的路径。由于我在Mac OS x雪豹上运行,我能够确认SD卡的内容。所有测试都在Android模拟器上完成。
在一个单独的项目TestVideo中,我创建了一个只从SD卡启动视频的活动。这按预期工作。然后我创建了另一个项目TestIncoming,它创建了一个活动,该活动创建一个覆盖onCallStateChanged(int state,String incomingNumber)方法的PhoneStateListener。在onCallStateChanged()方法中,我检查state == TelephonyManager.CALL_STATE_RINGING。如果为true,我创建一个启动视频的Intent。我实际上正在使用上面TestVideo项目中的代码。这是代码段。
PhoneStateListener callStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if(state == TelelphonyManager.CALL_STATE_RINGING) {
Intent launchVideo = new Intent(MyActivity.this, LaunchVideo.class);
startActivity(launchVideo);
}
}
};
PhoneStateListener被添加到TelephonyManager.listen()方法中,如此,
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);
以下是我不清楚的部分,清单。我试过的是以下内容:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.incomingdemo"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".IncomingVideoDemo"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.ANSWER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".LaunchVideo"
android:label="LaunchVideo">
</activity>
</application>
<uses-sdk android:minSdkVersion="2" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
</manifest>
我在IncomingVideoDemo活动中设置断点后运行调试器,其中创建了PhoneStateListener并且没有命中任何断点。非常感谢任何解决这个问题的见解。感谢。