我是Android编程新手。我试图建立一个电话录音机。我能够检测到来电,成功启动媒体记录器并录制语音。但是在呼叫断开时,Stop()方法不会触发。当我关闭应用程序时,它就停止了。除了停止()之外,一切都正常。当我关闭应用程序时,录音也会被保存。如何在通话断开后停止()录音?
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.Environment;
import android.telephony.TelephonyManager;
import java.io.IOException;
import java.util.Calendar;
public class nCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MediaRecorder callrecorder = new MediaRecorder();
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) {
String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Calendar c = Calendar.getInstance();
int tm = c.get(Calendar.DATE);
int tx = c.get(Calendar.SECOND);
String timex = tm+"-"+tx;
callrecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
callrecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
callrecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
callrecorder.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + incomingNumber +"-"+ timex+"-"+tx+".mp4");
try {
callrecorder.prepare();
} catch (IOException e) {
e.printStackTrace();
}
callrecorder.start();
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE)
|| intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_OFFHOOK)) {
callrecorder.stop();
callrecorder.release();
}
}
}
}
**
**如何停止()媒体录像机?我尝试实例化
MediaRecorder r;
在全球范围内,但是,
r、 停止()
不起作用,因为r没有实例化。
如果可以保存此MediaRecorder实例的状态,并在以后将其与停止方法一起使用,我该怎么做?
public class nCallRecorder extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) {
//start recording
String CallNo = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
MediaRecorder r = new MediaRecorder();
r.setAudioSource(MediaRecorder.AudioSource.MIC);
r.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
r.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
r.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+CallNo+".mp4");
try { r.prepare(); } catch(IOException e) { e.printStackTrace(); }
r.start();
} else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE)) {
//stop recording
Toast.makeText(context,"Call Ends",Toast.LENGTH_LONG).show();
}
}
}
检查状态是否已更改为 IDLE
似乎位于 if 意图.get 字符串扩展(TelephonyManager.EXTRA_STATE)等于(TelephonyManager.EXTRA_STATE_RINGING)) {
.你可能想要这样的东西:
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) {
// start recording
} else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE) {
// stop recording
}
此外,每次调用BroadcastRecverter时,您都在创建一个新的MediaRecorder
实例。您应该只在开始录制时创建一个MediaRecorder
实例,并保存该实例,以便以后可以停止它。
另一个小问题是,您有intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelePhoonyManager.EXTRA_SSTATE_OFFHOOK)
在您的条件下决定是否停止录制。“摘机”并不意味着你挂断了电话;这意味着“至少存在一个正在拨号、活动或挂起的呼叫”。
问题内容: 我想通知任何传入和传出语音呼叫的代码。我需要掌握以下所有内容: 如果是来电或去电 拨打的号码或来电显示的电话号码 通话时长,或者如果错过了通话 如果电话号码与电话的联系人列表中的某人匹配,如果我可以获得更多的联系信息,特别是联系人姓名,那也将是一件很圆滑的事。 通话结束后,我需要我的代码来获取这些信息。也许我只是没有在寻找正确的术语,但是我很难找到如何实现此目标的任何示例。 如果有人可
我正在做一个项目来记录在android中的VOIP通话,我没有找到任何解决方案,有很多应用程序支持手机上的VOIP录音。我找不到任何教程和帮助。Cube Call Recorder是提供此功能的应用程序之一,但我不知道如何做到这一点。我通过使用android MediaRecorder开始录音进行了测试,然后启动了WhatsApp通话,所以其他人无法收听我的声音。通话后,我检查了只有我的声音保存在
我在Android的通话记录应用程序中工作,以记录双方的语音,它在Android版本6之前工作良好,但在Android 7中不工作。Android 7的问题是远程语音未记录或可能听不到。 我用的是MediaRecorder。我尝试了所有的音频来源,但没有运气。如果有人知道如何在Android 7中实现这一点,请分享它或一些关于这方面的建议将非常有帮助。
我创建了语音通话录音应用程序,它与手机的麦克风和听筒配合得很好。但是当插入耳机时,它不能录制音频。我试图将AudioSource更改为AudioSource.default,以为它会自动接受默认音频源。它什么也没记录。
我得到一个错误,我不明白,不能找到任何帮助完整的信息: 请求的资源上不存在Access-Control-Allow-Origin标头。因此不允许访问Origin的https:*******' 。响应具有HTTP状态代码401。
关于通话记录 可确认通话记录。显示的图标可能因拨打或接听状态而异。 选择通话记录时显示的图标 已接来电 显示已接听的电话。 未接来电 显示未接听的电话。 已拨电话 显示电话的拨打记录。 语音消息 显示已接收的语音消息。 新的语音消息 仅于新接收语音消息时显示。 登录要求 仅于接收联系人名单的登录要求时显示。 提示 未确认的记录,会在(通话记录)的 (未处理事项)显示。 使用PSP-2000