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

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();
    }

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

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐