MediaPlayer在初始化时候设置MIC抛出异常 at android.media.MediaRecorder.setAudioSource(Native Method)

本文介绍了一个常见的Android录音权限问题及解决方案。当遇到audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC)报错时,通常是因为缺少必要的权限声明。文中提供了解决方案,在AndroidManifest.xml文件中加入<uses-permission android:name=android.permission.RECORD_AUDIO/>即可。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

检查错误:

audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

从这段跑出来的程序一般情况下都是没有 加录制的权限:

<uses-permission android:name="android.permission.RECORD_AUDIO"/>

在mainfest中加入这个权限语句基本搞定这个BUG


下面附上报错信息堆

这是一个 Android 平台上的 MediaPlayer 类的本地方法,用于设置视频渲染表面。它是 MediaPlayer 类内部的私有方法,并不是公开的 API,因此我们无法直接调用它。通常情况下,我们可以通过调用 MediaPlayer 类的 setSurface() 方法,将一个 Surface 对象传递给 MediaPlayer 对象,以便让 MediaPlayer 在该 Surface 上渲染视频。具体来说,可以通过以下方式设置 Surface: ```java MediaPlayer mediaPlayer = new MediaPlayer(); SurfaceView surfaceView = findViewById(R.id.surface_view); SurfaceHolder surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { mediaPlayer.setDisplay(holder); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // do nothing } @Override public void surfaceDestroyed(SurfaceHolder holder) { mediaPlayer.setDisplay(null); } }); ``` 在上面的代码中,我们创建了一个 MediaPlayer 对象和一个 SurfaceView 对象,然后通过 SurfaceView 的 getHolder() 方法获取其关联的 SurfaceHolder 对象。接下来,我们通过 SurfaceHolder 的 addCallback() 方法注册了一个回调函数,用于监听 Surface 的创建、改变和销毁事件。在回调函数中,我们将 SurfaceHolder 对象传递给 MediaPlayer 对象的 setDisplay() 方法,以便让 MediaPlayer 在该 Surface 上渲染视频。当 Surface 销毁时,我们需要将 MediaPlayer 的显示表面设置为 null,以便 MediaPlayer 停止渲染视频。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值