本文以修改媒体音量为例,修改铃声音量、系统音量方法也类似
需要用到安卓原生代码//音乐音量
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);
以上为原生安卓用到的几个方法,只是在安卓开发中用到
- 获得最大音量
- 获得当前音量
- 设置音量
相当于在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");