gpt4 book ai didi

android - java.lang.RuntimeException : start failed at android. media.MediaRecorder.start( native 方法)

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:55:53 26 4
gpt4 key购买 nike

我正在处理通话记录。当我开始录制一个电话时,不幸的是它停止了。 & 它给出错误 MediaRecorder 启动失败 -2147483648。请告诉我我的代码有什么问题?这是我的代码。

public class incomingcall extends BroadcastReceiver {
Context c;
MediaRecorder recorder;
public incomingcall() {
}
@Override
public void onReceive(Context context, Intent intent) {
c = context;
try {
PhoneStateChangeListener pscl = new PhoneStateChangeListener();
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(pscl, PhoneStateListener.LISTEN_CALL_STATE);
} catch (Exception e) {
Log.e("", "", e);
}
}

private class PhoneStateChangeListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
Toast.makeText(c, "ring", Toast.LENGTH_SHORT).show();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
startRecording();
Toast.makeText(c, "offhook", Toast.LENGTH_SHORT).show();
break;
case TelephonyManager.CALL_STATE_IDLE:
stopRecording();
Toast.makeText(c, "idle", Toast.LENGTH_SHORT).show();
break;
}
}
}
private void startRecording() {
try {
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
String file=c.getFilesDir().getAbsolutePath();
file+="/sound.3gp";
recorder.setOutputFile(file);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.prepare();
recorder.start();
} catch (IOException e) {
Log.e("", "prepare() failed", e);
}
}
private void stopRecording() {
try {
recorder.stop();
recorder.release();
recorder = null;
} catch (Exception e) {
Log.e("", "", e);
}
}
}

日志

    07-20 15:33:47.867 18525-18525/in.pounkumar.callblocker E/MediaRecorder: start failed: -2147483648
07-20 15:33:47.868 18525-18525/in.pounkumar.callblocker E/AndroidRuntime: FATAL EXCEPTION: main
Process: in.pounkumar.callblocker, PID: 18525
java.lang.RuntimeException: start failed.
at android.media.MediaRecorder.start(Native Method)
at in.pounkumar.callblocker.incomingcall.startRecording(incomingcall.java:73)
at in.pounkumar.callblocker.incomingcall.access$100(incomingcall.java:20)
at in.pounkumar.callblocker.incomingcall$PhoneStateChangeListener.onCallStateChanged(incomingcall.java:53)
at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:295)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

最佳答案

我有同样的问题,我通过对三星和 LG 设备使用不同的初始化解决了这个问题。

        String manufacturer = Build.MANUFACTURER;
if (manufacturer.toLowerCase().contains("samsung")) {
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
} else {
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
}

希望对你有帮助。

关于android - java.lang.RuntimeException : start failed at android. media.MediaRecorder.start( native 方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38479041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com