目录
3. AndroidTools.UnityAppContext部分的代码为:
本文以修改媒体音量为例,修改铃声音量、系统音量方法也类似
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);
以上为原生安卓用到的几个方法,
获得最大音量
获得当前音量
设置音量
2.下面我们只用unity实现,不需要用jar包或aar包
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<int>("STREAM_MUSIC");
mAudioManager = AndroidTools.UnityAppContext.Call<AndroidJavaObject>("getSystemService", Context.GetStatic<AndroidJavaObject>("AUDIO_SERVICE"));
return mAudioManager.Call<int>("getStreamMaxVolume", STREAM_MUSIC);
}
int GetCurrentVolume()
{
return mAudioManager.Call<int>("getStreamVolume", STREAM_MUSIC);
}
void SetVolume(int value)
{
mAudioManager.Call("setStreamVolume", STREAM_MUSIC, value, AudioManager.GetStatic<int>("FLAG_PLAY_SOUND"));
//AndroidTools.AndroidLogI(GetCurrentVolume().ToString());
}
3. AndroidTools.UnityAppContext部分的代码为:
private static AndroidJavaObject _UnityActivity = null;
/// <summary>
/// 获取当前App的Activity
/// </summary>
/// <returns></returns>
public static AndroidJavaObject UnityActivity
{
get
{
if (_UnityActivity == null)
{
_UnityActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
}
return _UnityActivity;
}
}
private static AndroidJavaObject _UnityAppContext = null;
/// <summary>
/// 获取当前App的Context
/// </summary>
public static AndroidJavaObject UnityAppContext
{
get
{
if (_UnityAppContext == null)
{
_UnityAppContext = UnityActivity.Call<AndroidJavaObject>("getApplicationContext");
}
return _UnityAppContext;
}
}
或者简单写一下
AndroidJavaObject UnityActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject UnityAppContext = UnityActivity.Call<AndroidJavaObject>("getApplicationContext");