- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
尝试录制通话,我在使用 AudioSource.MIC
或 AudioSource.VOICE_COMMUNICATION
时使用 MediaRecorder 类
它只录制我的声音而不是来自接收者当我使用 AudioSource.VOICE_CALL
时,它会在参加通话时出现异常。这是代码
if(intent.getAction().equals("android.intent.action.PHONE_STATE")){
if((bundle = intent.getExtras()) != null){
state = bundle.getString(TelephonyManager.EXTRA_STATE);
if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)){
inCall = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
wasRinging = true;
Toast.makeText(context, inCall + " is calling", Toast.LENGTH_SHORT).show();
}
else if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){
if(wasRinging){
Toast.makeText(context, "Call Answered", Toast.LENGTH_SHORT).show();
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss");
String filename = "rec_" + format.format(date) + ".mp3";
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getPath();
String fileUri = path + "/" + filename;
Log.v("testing uri", fileUri);
File file = new File(fileUri);
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setOutputFile(file.getAbsolutePath());
try {
recorder.prepare();
recorder.start();
recording = true;
} catch (IOException e) {
e.printStackTrace();
}
}
}
else if(state.equals(TelephonyManager.EXTRA_STATE_IDLE)){
wasRinging = false;
Toast.makeText(context, "Cancelled", Toast.LENGTH_SHORT).show();
if(recording && recorder != null){
recorder.stop();
recorder = null;
recording = false;
}
}
}
}
这是错误..
java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.PHONE_STATE flg=0x10 (has extras) } in com.asadullah.callrecorder.MyBroadCastReceiver@41d6c7a8
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:778)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5102)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: start failed.
at android.media.MediaRecorder.start(Native Method)
at com.asadullah.callrecorder.MyBroadCastReceiver.onReceive(MyBroadCastReceiver.java:62)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:768)
list 权限是:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.STORAGE" />
最佳答案
VOICE_CALL
现已弃用。这就是发生此错误的原因。
使用 VOICE_COMMUNICATION
作为 AudioSource,因为它是针对 VoIP 等语音通信调整的麦克风音频源。
我也在使用通话录音应用程序,但它在 Android 7.1.1 中失败了
如果您没有在 Android 7.1.1 上尝试通话记录,下面的代码将起作用。
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
关于android - 如何使用 AudioSource.VOICE_CALL 录制语音通话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45098103/
AudioSource.PlayClipAtPoint()将 AudioSource 组件添加到单一行为所附加到的当前游戏对象。但是,出于某种原因,它具有 void 返回类型,而不是返回对 Audio
我在游戏对象上附加了音频源,并在播放的脚本中附加了脚本: void OnCollisionEnter2D (Collision2D col) { if (col.gameObjec
我一直在尝试学习Unity中的音频,并且遇到一个问题,即音量增加到明显降低的程度。 声音触发于 GetComponent().PlayOneShot(sound); 而且似乎有时会被触发多次,从而导致
如何将一个游戏对象的 AudioSource 组件用于另一个游戏对象? GameObject1.AudioSource 在 gameobject2 中,我将使用 GameObject1.AudioSo
我有一些奇怪的问题,无法找到答案。 我使用wowza进行直播。它在AudioRecord recorder = new AudioRecord(this.mAudioSource, ... )内部使用
当用户拖动 2D 游戏对象时,我正在尝试播放声音。 游戏对象必须播放许多声音,因此我以编程方式创建音频源并通过检查器分配剪辑。 public class Card: Monobehavior, IDr
我在 unity3d 中遇到了一个奇怪的问题。我想使用多个音频源来播放具有重叠效果的声音。因为我自己无法解释问题 - 我只用一个 AudioSource 进行了同样的尝试。所以我有这个脚本: pub
我有两台三星 Galaxy S2,同一供应商(H3G Italy),同一固件 (2.3.5) 在同一家商店一起购买。 我开发了一个用于通话录音的应用程序,使用 mediarecorder 并将 VOI
我有多个带有 AudioSource 组件的钢琴键,如果我反复按一个键,声音会以原始声音剪辑中没有的滴答声开始。 我尝试更改音频剪辑并将多普勒因子设置为 0,但没有任何效果。 我可以通过在播放时实例化
我正在开发一个应用程序,该应用程序使用 MediaRecorder 在调用或接听电话时记录我自己的声音(使用 AudioSource.MIC 或 AudioSource.DEFAULT )。我遇到的问
尝试录制通话,我在使用 AudioSource.MIC 或 AudioSource.VOICE_COMMUNICATION 时使用 MediaRecorder 类 它只录制我的声音而不是来自接收者当我
我正在做一个项目,在这个项目中我必须使用 Android 开发板,就像下面一样,通过 MIC 录制音频,特别是语音。 PandaBoard BeagleBone Black AM335x Evalua
我想在两个 AudioRecord 对象中同时录制 Android 麦克风输入。有没有办法复制 Android AudioSource.MIC 或同时从两个实例访问它?如果是,我该怎么做? 最佳答案
我看到MediaRecorder允许您通过麦克风或电话录音。 我在AudioTrack上使用write()来产生基本频率以外的声音。实际上有多个音轨。 我本来以为会有一个MediaRecorder.A
我想在 android 中制作通话记录器。我有以下代码,当我使用MediaRecorder.AudioSource.VOICE_DOWNLINK | MediaRecorder.AudioSource
我想验证 voice_call 的音频源是否可用: MediaRecorder.AudioSource.VOICE_CALL 由于某些设备不允许,如何检查我是否可以通过编程方式对电话进行录音? 提前致
我使用 AudioSource.VOICE_COMMUNICATION 作为所有支持此功能的设备的 AudioRecord 实例中的源。这适用于我所有的平板电脑,除了一个。 “Acer Iconia
我如何检查给定设备是否已连接。使用 org.bluez.AudioSource GetProperty我正在使用 c 和 DBus,任何人都可以帮助我摆脱这个...... 最佳答案 我假设您一直在研究
我正在使用媒体录音机在 android 中使用 VOICE_COMMUNICATION 和 MIC 模式交替录音。 RECORD_SOURCE = MediaRecorder.AudioSource.
所以我做了(在 Unity 编辑器中): GameObject -> 创建空 我将我的 Avatar.cs(主要玩家动画 MonoBehaviour)拖到游戏文件中。 我在 Avatar.cs 中添加
我是一名优秀的程序员,十分优秀!