小编Pio*_*cki的帖子

通话录音/处理服务! - Android

您好,
我正致力于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

7
推荐指数
1
解决办法
1万
查看次数