我希望能够在来电时开始播放短视频。视频将循环播放,直到接听电话。我已将视频加载到模拟器 sdcard 上,然后使用磁盘上 sdcard.iso 文件的路径创建了适当的级别 avd。由于我在 Mac OS x 雪豹上运行,因此我能够确认 sdcard 的内容。所有测试都在安卓模拟器上完成。
在一个单独的项目 TestVideo 中,我创建了一个从 sdcard 启动视频的活动。这按预期工作。然后我创建了另一个项目 TestIncoming,它创建了一个活动,该活动创建了一个覆盖 onCallStateChanged(int state, String incomingNumber) 方法的 PhoneStateListener。在 onCallStateChanged() 方法中,我检查 state == TelephonyManager.CALL_STATE_RINGING。如果为真,我会创建一个启动视频的 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 并且没有命中任何断点。非常感谢解决此问题的任何见解。谢谢。