首页 > 其他分享 >android系统各种音量的获取与设置 以及监听音量变化

android系统各种音量的获取与设置 以及监听音量变化

时间:2023-05-01 11:32:05浏览次数:30  
标签:STREAM AudioManager max current 音量 android mAudioManager 监听


获取系统音量

通过程序获取android系统手机的铃声和音量。同样,设置铃声和音量的方法也很简单!

设置音量的方法也很简单,AudioManager提供了方法:

publicvoidsetStreamVolume(intstreamType,intindex,intflags)其中streamType有内置的常量,去文档里面就可以看到。

JAVA代码:

AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
//通话音量
int max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_VOICE_CALL );
int current = mAudioManager.getStreamVolume( AudioManager.STREAM_VOICE_CALL );
Log.d(“VIOCE_CALL”, “max : ” + max + ” current : ” + current);//系统音量
max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_SYSTEM );
current = mAudioManager.getStreamVolume( AudioManager.STREAM_SYSTEM );
Log.d(“SYSTEM”, “max : ” + max + ” current : ” + current);//铃声音量
max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_RING );
current = mAudioManager.getStreamVolume( AudioManager.STREAM_RING );
Log.d(“RING”, “max : ” + max + ” current : ” + current);//音乐音量
max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_MUSIC );
current = mAudioManager.getStreamVolume( AudioManager.STREAM_MUSIC );
Log.d(“MUSIC”, “max : ” + max + ” current : ” + current);//提示声音音量
max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_ALARM );
current = mAudioManager.getStreamVolume( AudioManager.STREAM_ALARM );
Log.d(“ALARM”, “max : ” + max + ” current : ” + current);
ps:
  游戏过程中只允许调整多媒体音量,而不允许调整通话音量。
  setVolumeControlStream(AudioManager.STREAM_MUSIC);
  长时间不动,不允许黑屏,View.setKeepScreenOn(true);
  估计manifest文件中需要注册权限吧

 

调节媒体音量

AudioManager audio = (AudioManager) getSystemService(Service.AUDIO_SERVICE);


重写 Activity 的 onKeyDown 方法


?
  @Override
   publicbooleanonKeyDown(intkeyCode, KeyEvent event) {
       switch(keyCode) {
       caseKeyEvent.KEYCODE_VOLUME_UP:
           audio.adjustStreamVolume(
               AudioManager.STREAM_MUSIC,
               AudioManager.ADJUST_RAISE,
               AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI);
           returntrue;
       caseKeyEvent.KEYCODE_VOLUME_DOWN:
           audio.adjustStreamVolume(
               AudioManager.STREAM_MUSIC,
               AudioManager.ADJUST_LOWER,
               AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI);
           returntrue;
       default:
           break;
       }
       returnsuper.onKeyDown(keyCode, event);
   }
private void registerVolumeChangeReceiver() {
        mSettingsContentObserver = new SettingsContentObserver(this, new Handler());
        getApplicationContext().getContentResolver().registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, mSettingsContentObserver);
    }

    private void unregisterVolumeChangeReceiver(){
        getApplicationContext().getContentResolver().unregisterContentObserver(mSettingsContentObserver);
    }

    public class SettingsContentObserver extends ContentObserver {
        Context context;

        public SettingsContentObserver(Context c, Handler handler) {
            super(handler);
            context = c;
        }

        @Override
        public boolean deliverSelfNotifications() {
            return super.deliverSelfNotifications();
        }

        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
            System.out.println("currVolume:" + currentVolume);
            //TODO
        }
    }



标签:STREAM,AudioManager,max,current,音量,android,mAudioManager,监听
From: https://blog.51cto.com/u_14523369/6238639

相关文章

  • android2.3新增API StrictMode介绍
    google在android2.3中新增了StrictModeAPI来设置对一个thread的策略(ui线程或者分线程),它主要检测了读写操作,访问网络,数据库读写等耗时的操作并将其以log或者dialog等形式打印出来。分析这些日志,我们可以尽快找出程序运行缓慢的原因进而优化代码,避免ANR(ApplicationNotRespondin......
  • 一个android的webview的例子
    截图如图所示。核心部分代码packagecom.example.app;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importandroid.support.v7.app.ActionBarActivity;importandroid.support.v7.app.ActionBar;importandroid.support.v4.app.Fragment;......
  • Android手机屏幕锁屏监测
    手机屏幕锁屏和解锁都是会发广播出来的,我们只要用BroadcaseReceiver来监听相应的Action即可,必须动态在代码中注册才能够接受到广播。1.publicvoidonCreate(finalBundlesavedInstanceState){2.finalIntentFilterfilter=newIntentFilter();3.filter......
  • Android常用工具类
    Android常用工具类很好很强大 http://www.trinea.cn/android/android-common-utils/ https://github.com/wyouflf/xUtils Android11个常用工具类:(见附件)......
  • android计时器类CountDownTime的运…
     1.importandroid.os.Handler;2.importandroid.os.Message;3.4.publicabstractclassAdvancedCountdownTimer{5.6.privatefinallongmCountdownInterval;7.8.privatelongmTotalTime;9.10.privatelongmRemainTime;11.12.......
  • Android获取其他包的Context实例,…
    Android中有Context的概念,想必大家都知道。Context可以做很多事情,打开activity、发送广播、打开本包下文件夹和数据库、获取classLoader、获取资源等等。如果我们得到了一个包的Context对象,那我们基本上可以做这个包自己能做的大部分事情。         那我们能得到吗?很高......
  • Android播放GIF动画
    "quality="high"type="application/x-shockwave-flash"pluginspage="http://www.macromedia.com/go/getflashplayer">1.<ImageViewandroid:id="@+id/gifpicture"2.android:layout_width="fill_parent&quo......
  • 监听手机晃动SensorEventListener
    1.importandroid.content.Context;2.importandroid.hardware.Sensor;3.importandroid.hardware.SensorEvent;4.importandroid.hardware.SensorEventListener;5.importandroid.hardware.SensorManager;6.7.8.publicclassShakeListenerimplement......
  • Android 悬浮Activity并可拖动(访…
    天天动听,这款Android手机上的音乐播放器,相信不少朋友都曾用过。不知大家是否注意到,天天动听有一个迷你歌词的特效。 什么效果呢?就是不管你切到什么画面,歌词永远显示,并且可以拖动。类型QQ音乐,在电脑上播放时显示的歌词效果。 下面先来看一下效果。  这个歌词是在......
  • Android中Context详解 ---- 你所不…
    大家好,             Interfacetoglobalinformationaboutanapplicationenvironment.ThisisanabstractclasswhoseimplementationisprovidedbytheAndroidsystem.Itallowsaccesstoapplication-specificresourcesandclasses,aswellasup-c......