【发布时间】:2014-05-30 06:06:38
【问题描述】:
我发现了很多关于这个问题的问题,但我一点都不清楚。 我想开发和应用程序,以便它可以记录任何拨出电话和来电。我在下面写了这段代码,但它不起作用。请帮助详细说明。在此先感谢。
import java.io.File;
import java.io.IOException;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.Environment;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
public class serviceBroadcast extends BroadcastReceiver {
Context mycontext;
final MediaRecorder recorder = new MediaRecorder();
public void onReceive(Context context, Intent intent) {
mycontext=context;
try {
// TELEPHONY MANAGER class object to register one listner
TelephonyManager tmgr = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
//Create Listner
TeleListener PhoneListener = new TeleListener();
// Register listener for LISTEN_CALL_STATE
tmgr.listen(PhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
} catch (Exception e) {
Log.e("Phone Receive Error", " " + e);
}
}
class TeleListener extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
StopRecording();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
startRecording();
break;
case TelephonyManager.CALL_STATE_RINGING:
break;
default:
break;
}
}
}
public void startRecording(){
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(Environment.getExternalStorageDirectory()+ "/RecordMyVoice.mp4");
try {
recorder.prepare();
Log.i(this.getClass().getName(), "Prepared");
} catch (IllegalStateException e) {
e.printStackTrace();
Log.i(this.getClass().getName(), "ERR 1");
} catch (IOException e) {
e.printStackTrace();
Log.i(this.getClass().getName(), "ERR 2");
}
recorder.start();
}
public void StopRecording(){
recorder.stop();
recorder.release();
Log.i(this.getClass().getName(), "Stop Recording");
}
}
}
【问题讨论】:
-
有什么错误吗?或者别的什么
-
是的。当我打电话给某人或来电时,它就会崩溃..
-
你能在这里发日志吗
-
@MehediHassan 你得到答案了吗?您的应用记录通话吗?如果得到答案,请发布。
标签: android audio android-sdcard mediarecorder