您当前的位置: 首页 >  unity

染指流年灬

暂无认证

  • 1浏览

    0关注

    194博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Unity调用原生安卓】unity实现获取安卓媒体音量并修改

染指流年灬 发布时间:2022-10-13 13:19:12 ,浏览量:1

本文以修改媒体音量为例,修改铃声音量、系统音量方法也类似

需要用到安卓原生代码
//音乐音量
final AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
 
//获得最大音量
int max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_MUSIC );
 
//获得当前音量
int current = mAudioManager.getStreamVolume( AudioManager.STREAM_MUSIC );
 
//修改音量
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,5,AudioManager.FLAG_SHOW_UI);
 

以上为原生安卓用到的几个方法,只是在安卓开发中用到

  1. 获得最大音量
  2. 获得当前音量
  3. 设置音量
我们只用unity实现,不需要用jar包或aar包

相当于在unity端写了上面的代码

    AndroidJavaObject mAudioManager = null;
    AndroidJavaClass AudioManager;
    int STREAM_MUSIC;
    int GetMaxVolume()
    {
        AndroidJavaClass Context = new AndroidJavaClass("android.content.Context");
        AudioManager = new AndroidJavaClass("android.media.AudioManager");
        STREAM_MUSIC = AudioManager.GetStatic("STREAM_MUSIC");
 
        mAudioManager = AndroidTools.UnityAppContext.Call("getSystemService", Context.GetStatic("AUDIO_SERVICE"));
        return mAudioManager.Call("getStreamMaxVolume", STREAM_MUSIC);
    }
    int GetCurrentVolume()
    {
        return mAudioManager.Call("getStreamVolume", STREAM_MUSIC);
    }
    void SetVolume(int value)
    {
        mAudioManager.Call("setStreamVolume", STREAM_MUSIC, value, AudioManager.GetStatic("FLAG_PLAY_SOUND"));
 
        //AndroidTools.AndroidLogI(GetCurrentVolume().ToString());
    }
AndroidTools.UnityAppContext部分的代码为
        private static AndroidJavaObject _UnityActivity = null;
        /// 
        /// 获取当前App的Activity
        /// 
        /// 
        public static AndroidJavaObject UnityActivity
        {
            get
            {
                if (_UnityActivity == null)
                {
                    _UnityActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic("currentActivity");
                }
                return _UnityActivity;
            }
        }
 
        private static AndroidJavaObject _UnityAppContext = null;
 
        /// 
        /// 获取当前App的Context
        /// 
        public static AndroidJavaObject UnityAppContext
        {
            get
            {
                if (_UnityAppContext == null)
                {
                    _UnityAppContext = UnityActivity.Call("getApplicationContext");
                }
                return _UnityAppContext;
            }
        }

或者简单写一下

AndroidJavaObject UnityActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic("currentActivity");
AndroidJavaObject UnityAppContext = UnityActivity.Call("getApplicationContext");
关注
打赏
1665909078
查看更多评论
立即登录/注册

微信扫码登录

0.0367s