您好,
我正致力于Android的解决方案,它将记录呼叫(包括输出和接收)并将进一步处理记录的数据(在我的应用程序的终点,没有音频文件数据将保留在手机内存上).我已经使用PhoneStateListener.LISTEN_CALL_STATE实现了BroadcastReceiver,如果state为CALL_STATE_OFFHOOK则启动录制服务.然后在服务中,我启动一个尝试记录呼叫的新线程,以及另一个具有PhoneStateListener.LISTEN_CALL_STATE的BroadcastReceiver,如果电话状态更改为TelephonyManager.CALL_STATE_IDLE,则调用一个停止记录的方法.
创建的音频文件为空.调用我的服务中的recorder.stop()方法时抛出异常.哪里出错?我能做得更好吗?
第一个(独立)BroadcastReceiver:
package com.piotr.callerrecogniser;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
public class CallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MyPhoneStateListener phoneListener = new MyPhoneStateListener(context);
TelephonyManager telephony = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
}
class MyPhoneStateListener extends PhoneStateListener {
public static final String tag = "CallerRecogniser - CallReceiver";
private Context context;
MyPhoneStateListener(Context c) {
super();
context = c;
}
public static final int NOTIFICATION_ID_RECEIVED = 0x1221;
@Override
public …Run Code Online (Sandbox Code Playgroud) service android broadcastreceiver android-sdk-2.3 mediarecorder