Android 打开关闭手机扬声器

飞哥语录:数据类型是对内存的抽象。

1.添加权限

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

2.获取手机音频管理者对象

	private AudioManager audioManager;   
	audioManager = ((AudioManager) getSystemService(AUDIO_SERVICE));

3.设置几个属性

private boolean isSpeakerOpen = true;//默认开启手机扬声器  
private static int currVolume = 0;//当前音量

4.设置一个按钮的点击事件来打开关闭手机扬声器

	button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
				isSpeakerOpen = !isSpeakerOpen;
                if (isSpeakerOpen) {
                    OpenSpeaker();
                } else {
                    CloseSpeaker();
                }
            }
        });

5.打开扬声器

public void OpenSpeaker() {
        try {
            audioManager.setMode(AudioManager.ROUTE_SPEAKER);
            // 获取当前通话音量
            currVolume = audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL);

            if (!audioManager.isSpeakerphoneOn()) {
                audioManager.setSpeakerphoneOn(true);

                audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,
                        audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL),
                        AudioManager.STREAM_VOICE_CALL);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        Toast.makeText(MainActivity.this, "打开扬声器", Toast.LENGTH_SHORT).show();
    }

6.关闭扬声器

public void CloseSpeaker() {

        try {
            if (audioManager != null) {
                if (audioManager.isSpeakerphoneOn()) {
                    audioManager.setSpeakerphoneOn(false);
                    audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, currVolume,AudioManager.STREAM_VOICE_CALL);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        Toast.makeText(MainActivity.this, "关闭扬声器", Toast.LENGTH_SHORT).show();
    }

好了,今天的分享就到这里,如果有什么问题,可以在下方留言与我交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值