Unity 調用 Android Native 方法(一) 獲得Android系統音量


學習雷鋒,好榜樣,接下來的這一系類教程里,將通過unity來實現Android端的一些常用功能,

不需要在 Asset/Plugins/Android 目錄下引用jar包或者aar包,這是重點。

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 
 5 public class Volume : MonoBehaviour {
 6 
 7 
 8     private const string currentVolume = "getStreamVolume";//當前音量
 9     private const string maxVolume = "getStreamMaxVolume";//最大音量
10 
11     private const int STREAM_VOICE_CALL = 0;
12     private const int STREAM_SYSTEM = 1;
13     private const int STREAM_RING = 2;
14     private const int STREAM_MUSIC = 3;
15     private const int STREAM_ALARM = 4;
16     private const int STREAM_NOTIFICATION = 5;
17      const int STREAM_DTMF = 8;
18 
19     //創建幾個 "3D Text" 用於接收音量值
20     public  TextMesh STREAM_VOICE_CALL_Text;
21     public  TextMesh STREAM_SYSTEM_Text;
22     public  TextMesh STREAM_RING_Text;
23     public  TextMesh STREAM_MUSIC_Text;
24     public  TextMesh STREAM_ALARM_Text;
25     public  TextMesh STREAM_NOTIFICATION_Text;
26     public  TextMesh STREAM_DTMF_Text;
27 
28 
29     private static AndroidJavaObject audioManager;
30 
31 
32     void Awake()
33     {
34         AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
35         AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
36         audioManager = currentActivity.Call<AndroidJavaObject>("getSystemService", new AndroidJavaObject("java.lang.String", "audio"));
37     }
38     void Update()
39     {
40 //        //current volume value
41 //        STREAM_VOICE_CALL_Text.text = audioManager.Call<int> (currentVolume, STREAM_VOICE_CALL).ToString ();
42 //        STREAM_SYSTEM_Text.text = audioManager.Call<int> (currentVolume, STREAM_SYSTEM).ToString ();
43 //        STREAM_RING_Text.text = audioManager.Call<int> (currentVolume, STREAM_RING).ToString ();
44 //        STREAM_MUSIC_Text.text = audioManager.Call<int> (currentVolume, STREAM_MUSIC).ToString ();
45 //        STREAM_ALARM_Text.text = audioManager.Call<int> (currentVolume, STREAM_ALARM).ToString ();
46 //        STREAM_NOTIFICATION_Text.text = audioManager.Call<int> (currentVolume, STREAM_NOTIFICATION).ToString ();
47 //        STREAM_DTMF_Text.text = audioManager.Call<int> (currentVolume, STREAM_DTMF).ToString ();
48 
49         //Max volume value
50         STREAM_VOICE_CALL_Text.text = audioManager.Call<int> (maxVolume, STREAM_VOICE_CALL).ToString ();
51         STREAM_SYSTEM_Text.text = audioManager.Call<int> (maxVolume, STREAM_SYSTEM).ToString ();
52         STREAM_RING_Text.text = audioManager.Call<int> (maxVolume, STREAM_RING).ToString ();
53         STREAM_MUSIC_Text.text = audioManager.Call<int> (maxVolume, STREAM_MUSIC).ToString ();
54         STREAM_ALARM_Text.text = audioManager.Call<int> (maxVolume, STREAM_ALARM).ToString ();
55         STREAM_NOTIFICATION_Text.text = audioManager.Call<int> (maxVolume, STREAM_NOTIFICATION).ToString ();
56         STREAM_DTMF_Text.text = audioManager.Call<int> (maxVolume, STREAM_DTMF).ToString ();
57 
58     }
59 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM