android4.4.2 解決地圖音量調節無作用

增加了通道11的音量設置和獲取,通過保存到環境變量來實現,
並且調節音量的時候也發了廣播,通知AP此時導航調節的音量。

diff --git a/frameworks/base/api/current.txt b/frameworks/base/api/currefnt.txt
index a57af55ee..3ebc443ff 100644
--- a/frameworks/base/api/current.txtff
+++ b/frameworks/base/api/current.txt
@@ -11788,6 +11788,7 @@ package android.media {
     field public static final int MODE_IN_COMMUNICATION = 3; // 0x3
     field public static final int MODE_NORMAL = 0; // 0x0
     field public static final int MODE_RINGTONE = 1; // 0x1
+    field public static java.lang.String NAVI_VOL_KEY;
     field public static final deprecated int NUM_STREAMS = 5; // 0x5
     field public static final java.lang.String PROPERTY_OUTPUT_FRAMES_PER_BUFFER = "android.media.property.OUTPUT_FRAMES_PER_BUFFER";
     field public static final java.lang.String PROPERTY_OUTPUT_SAMPLE_RATE = "android.media.property.OUTPUT_SAMPLE_RATE";
diff --git a/frameworks/base/media/java/android/media/AudioManager.java b/frameworks/base/media/java/android/media/AudioManager.java
index ba01068a8..6457f6653 100755
--- a/frameworks/base/media/java/android/media/AudioManager.java
+++ b/frameworks/base/media/java/android/media/AudioManager.java
@@ -234,6 +234,7 @@ public class AudioManager {
 
 
     private static boolean apCanSetVolume = SystemProperties.getBoolean("ro.bb.apCanSetVolume", false);
+    public static String NAVI_VOL_KEY = "persist.sys.navi.volume";
     /**  @hide Default volume index values for audio streams */
     public static final int[] DEFAULT_STREAM_VOLUME = new int[] {
         12,  // STREAM_VOICE_CALL
@@ -757,6 +758,12 @@ public class AudioManager {
 	 }
         IAudioService service = getService();
         try {
+		if(streamType ==12){
+			int type = SystemProperties.getInt(NAVI_VOL_KEY,0);
+			Log.d(TAG,"NAVI_VOL_KEY="+type);
+			return type;
+			}
+			
             if (mUseMasterVolume) {
                 return service.getMasterVolume();
             } else {
@@ -842,6 +849,12 @@ public class AudioManager {
                 service.setMasterVolume(index, flags, mContext.getOpPackageName());
             } else {
 			String curSetVolumeApp=	ActivityThread.currentPackageName();	
+			if(streamType == 12){
+				Intent intent = new Intent("com.bbkegroup.android.action.Navi.setvolume");
+				intent.putExtra("volumevalue", index);
+        			mContext.sendBroadcast(intent);
+				Log.d(TAG, "setStreamVolume="+index);
+				}
 		  	if(("com.bb.carnet.navimix".equals(curSetVolumeApp))||("com.android.settings".equals(curSetVolumeApp))
 				||(apCanSetVolume==true)){
           			service.setStreamVolume(streamType, index, flags, mContext.getOpPackageName());
diff --git a/packages/apps/NaviMix/src/com/bb/carnet/service/NaviMixSerivce.java b/packages/apps/NaviMix/src/com/bb/carnet/service/NaviMixSerivce.java
index 9edc560b3..da2ae746f 100755
--- a/packages/apps/NaviMix/src/com/bb/carnet/service/NaviMixSerivce.java
+++ b/packages/apps/NaviMix/src/com/bb/carnet/service/NaviMixSerivce.java
@@ -28,6 +28,7 @@ public class NaviMixSerivce extends Service {
 	public static final String BT_CALL_ACTION = "send.to.os.btcall.state";
 	public static final String ACTION_BT_UPGRADE_SERVER_TO_OS = "com.bbkegroup.android.action.bbserverToOs.btupgrade";
 	public static final String ACTION_BT_UPGRADE_OS_TO_SERVER = "com.bbkegroup.android.action.OsTobbserver.btupgrade";
+	public static final String ACTION_NAVI_SET_VOLUME = "com.bbkegroup.android.action.Navi.setvolume";
 	private static final int custidNum=SystemProperties.getInt("sys.imx6.custid_num", 0);
 	@Override
 	public IBinder onBind(Intent arg0) {
@@ -45,6 +46,7 @@ public class NaviMixSerivce extends Service {
 		filter = new IntentFilter();
 		filter.addAction(BT_CALL_ACTION);
 		filter.addAction(ACTION_BT_UPGRADE_SERVER_TO_OS);
+		filter.addAction(ACTION_NAVI_SET_VOLUME);
 		registerReceiver(new NaviReceiver(), filter);
 		
 		m_am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
@@ -137,6 +139,11 @@ public class NaviMixSerivce extends Service {
 						bbOSLib.setUpdateBT(1);
 						sendBtupteState(ACTION_BT_UPGRADE_OS_TO_SERVER);
 					}
+				}else if(action.equals(ACTION_NAVI_SET_VOLUME)){
+					int state = intent.getIntExtra("volumevalue", -1);	
+					String s = String.valueOf(state);
+					SystemProperties.set("persist.sys.navi.volume",s);
+					Log.d(TAG,"recevie volumevalue:"+state);
 				}
 			}
 		}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章