android 蓝牙mute,android mute camera shutter sound?

Well, all those solutions are good but i prefer setting the volume to 0 (and not only system since some devices users other streams then system and/or not all streams include system) before:

smth like this would work flawlessly:

Camera mCamera = null;

function takePicture() {

storeSoundSettings();

setMuteAll(true);

// init camera and such.

Camera.CameraInfo info = new Camera.CameraInfo();

Camera.getCameraInfo(IdOfCameraBackOrFront, info);

if (info.canDisableShutterSound) {

camera.enableShutterSound(false);

}

setMuteAll(false);

recoverSoundSettings();

}

and store, recover and setMuteAll something like this:

int[] streams = new int[]{

AudioManager.STREAM_ALARM,

AudioManager.STREAM_DTMF,

AudioManager.STREAM_MUSIC,

AudioManager.STREAM_NOTIFICATION,

AudioManager.STREAM_RING,

AudioManager.STREAM_SYSTEM,

AudioManager.STREAM_VOICE_CALL};

JSONObject json;

AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

public void storeSoundSettings() {

json = new JSONObject();

json.put("mode", manager.getMode());

json.put("ringermode", manager.getRingerMode());

for (int stream : streams) {

json.put("stream_" + stream, manager.getStreamVolume(stream));

}

}

public void recoverSoundSettings() {

json = new JSONObject(readString("last_audio_setting", null));

manager.setMode(json.getInt("mode"));

manager.setRingerMode(json.getInt("ringermode"));

for (int stream : streams) {

manager.setStreamVolume(stream, json.getInt("stream_" + stream), AudioManager.FLAG_ALLOW_RINGER_MODES);

}

public void setMuteAll(boolean mute) {

for (int stream : streams) {

manager.setStreamMute(stream, mute);

if (mute) {

manager.setStreamVolume(stream, 100, AudioManager.FLAG_ALLOW_RINGER_MODES);

} else {

manager.setStreamVolume(stream, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

}

}

}

Do not forget to catch the exceptions. I removed them for better highlighting.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值