AudioManager 修改系统Android系统的音量

时间:2025-01-31 08:48:56
  • package ;
  • import ;
  • import ;
  • import ;
  • import ;
  • import ;
  • import Android.;
  • import Android.;
  • import Android.;
  • import Android.;
  • import Android.;
  • import Android.;
  • import Android.;
  • import Android.;
  • import Android.;
  • import Android.;
  • /**
  • * AudioTrack 播放音频 如wav格式
  • * 并允许调节音量
  • * @author Administrator
  • *
  • */
  • public class MainActivity5 extends Activity {
  • private Button play;
  • private Button stop;
  • private SeekBar soundValue;
  • private AudioTrack at;
  • private AudioManager am;
  • @Override
  • public void onCreate(Bundle savedInstanceState) {
  • super.onCreate(savedInstanceState);
  • setContentView(.main_sk);
  • am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
  • play = (Button)findViewById(.main_sk_play);
  • stop = (Button)findViewById(.main_sk_stop);
  • soundValue = (SeekBar)findViewById();
  • setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
  • (new OnClickListener() {
  • @Override
  • public void onClick(View v) {
  • if(()){
  • (false);
  • }
  • //setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
  • (AudioManager.MODE_IN_CALL);
  • ((AudioManager.STREAM_VOICE_CALL));
  • ("&&&&&&&&&&&&&");
  • ((AudioManager.STREAM_VOICE_CALL));
  • //(streamType, index, flags)
  • int bufferSizeInBytes = (44100, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
  • if(at==null){
  • at = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 44100, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSizeInBytes, AudioTrack.MODE_STREAM);
  • ("22222");
  • //(100f, 100f);
  • (0.7f, 0.7f);//设置当前音量大小
  • new AudioTrackThread().start();
  • }else{
  • if(()==AudioTrack.PLAYSTATE_PLAYING){
  • ("111111111");
  • }else{
  • ("33333");
  • at = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 44100, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSizeInBytes, AudioTrack.MODE_STREAM);
  • new AudioTrackThread().start();
  • }
  • }
  • }
  • });
  • (new OnClickListener() {
  • @Override
  • public void onClick(View v) {
  • if(()==AudioTrack.PLAYSTATE_PLAYING){
  • try{
  • ();
  • }catch (IllegalStateException e)
  • {
  • ();
  • }
  • ();
  • (AudioManager.MODE_NORMAL);
  • }
  • }
  • });
  • // (100);//音量调节的极限
  • // (70);//设置seekbar的位置值
  • ((AudioManager.STREAM_VOICE_CALL));
  • ((AudioManager.STREAM_VOICE_CALL));
  • (new () {
  • @Override
  • public void onStopTrackingTouch(SeekBar seekBar) {
  • // float vol=(float)(())/(float)(());
  • // (vol);
  • // (vol, vol);//设置音量
  • (AudioManager.STREAM_VOICE_CALL, (), AudioManager.FLAG_PLAY_SOUND);
  • }
  • @Override
  • public void onStartTrackingTouch(SeekBar seekBar) {
  • // TODO Auto-generated method stub
  • }
  • @Override
  • public void onProgressChanged(SeekBar seekBar, int progress,
  • boolean fromUser) {
  • // TODO Auto-generated method stub
  • }
  • });
  • }
  • class AudioTrackThread extends Thread{
  • @Override
  • public void run() {
  • byte[] out_bytes = new byte[44100];
  • InputStream is = getResources().openRawResource();
  • int length ;
  • try{
  • ();
  • }catch (IllegalStateException e)
  • {
  • ();
  • }
  • try {
  • while((length = (out_bytes))!=-1){
  • //(length);
  • (out_bytes, 0, length);
  • }
  • } catch (IOException e) {
  • ();
  • }
  • if(()==AudioTrack.PLAYSTATE_PLAYING){
  • try{
  • ();
  • }catch (IllegalStateException e)
  • {
  • ();
  • }
  • ();
  • (AudioManager.MODE_NORMAL);
  • }
  • }
  • }
  • }