1

我希望能够在来电时开始播放短视频。视频将循环播放,直到接听电话。我已将视频加载到模拟器 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 并且没有命中任何断点。非常感谢解决此问题的任何见解。谢谢。

4

0 回答 0