欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中默認(rèn)系統(tǒng)的聲音/大小修改和配置詳解

 更新時(shí)間:2017年11月16日 09:55:59   作者:Android技術(shù)特工隊(duì)  
這篇文章主要給大家介紹了關(guān)于Android中默認(rèn)系統(tǒng)的聲音/大小修改和配置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位Android開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。

前言

聲音管理系統(tǒng)用來(lái)實(shí)現(xiàn)聲音的輸入和輸出、聲音的控制和路由等功能,包括主和各種音源的音量調(diào)節(jié)、聲音焦點(diǎn)控制,聲音外設(shè)的檢測(cè)和狀態(tài)管理,聲音源輸入和輸出的策略管理、音效的播放、音軌設(shè)置和播放、錄音設(shè)置和啟動(dòng)等功能。

最近在做定制需求的時(shí)候,需要修改系統(tǒng)通知的聲音,將其禁用掉,避免第三方應(yīng)用發(fā)送通知時(shí),聲音很大嚇到用戶(hù)。索性就把通知聲音關(guān)掉。下面就說(shuō)說(shuō)關(guān)閉聲音的幾種方法,以及修改系統(tǒng)默認(rèn)聲音的方法,分享出來(lái)供大家參考學(xué)習(xí),下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

本文是基于Android5.1的代碼

一、直接修改系統(tǒng)層默認(rèn)的聲音大小

在系統(tǒng)代碼frameworks/base/media/java/android/media/AudioService.java的開(kāi)頭定義了兩個(gè)數(shù)組,一個(gè)MAX_STREAM_VOLUME 這里面定義了各種聲音的最大值(最大值不是100,所以需要AudioManager.getStreamMaxVolume(type)來(lái)獲取各個(gè)音量的最大值),然后進(jìn)行設(shè)置。

還定義了一個(gè)數(shù)組DEFAULT_STREAM_VOLUME 這里面則和MAX_STREAM_VOLUME里定義的順序是一樣,表明了各種聲音的默認(rèn)的大小。

此塊代碼如下:

/** @hide Maximum volume index values for audio streams */
 private static int[] MAX_STREAM_VOLUME = new int[] {
  5, // STREAM_VOICE_CALL
  7, // STREAM_SYSTEMX_STREAM_VOLUMEMAX_STREAM_VOLUMEMAX_STREAM_VOLUME
  7, // STREAM_RING
  15, // STREAM_MUSIC
  7, // STREAM_ALARM
  7, // STREAM_NOTIFICATION
  15, // STREAM_BLUETOOTH_SCO
  7, // STREAM_SYSTEM_ENFORCED
  15, // STREAM_DTMF
  15 // STREAM_TTS
 };
 private static int[] DEFAULT_STREAM_VOLUME = new int[] {
  4, // STREAM_VOICE_CALL
  7, // STREAM_SYSTEM
  5, // STREAM_RING
  11, // STREAM_MUSIC
  6, // STREAM_ALARM
  5, // STREAM_NOTIFICATION
  7, // STREAM_BLUETOOTH_SCO
  7, // STREAM_SYSTEM_ENFORCED
  11, // STREAM_DTMF
  11 // STREAM_TTS
 };

如果我們需要修改默認(rèn)的通知聲音,則可以將STREAM_NOTIFICATION 前面的數(shù)值 5 給為 0即可,這樣默認(rèn)聲音就為0 了。

二、修改數(shù)據(jù)庫(kù)中的通知聲音值

媒體聲音這些數(shù)據(jù)在數(shù)據(jù)庫(kù)中都會(huì)默認(rèn)的存放數(shù)據(jù),我們知道大多數(shù)的數(shù)據(jù)都是系統(tǒng)初次啟動(dòng)的時(shí)候在SettingProvider應(yīng)用中加載初始化的值,當(dāng)然通知的聲音也在里面。

具體的代碼在frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 其中有個(gè)方法loadVolumeLevels(db) 此方法則是加載所有默認(rèn)聲音大小的地方,具體代碼如下:

stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" + " VALUES(?,?);");
loadSetting(stmt, Settings.System.VOLUME_MUSIC,  AudioService.getDefaultStreamVolume(AudioManager.STREAM_MUSIC));
loadSetting(stmt, Settings.System.VOLUME_RING,   AudioService.getDefaultStreamVolume(AudioManager.STREAM_RING));
loadSetting(stmt, Settings.System.VOLUME_SYSTEM,  AudioService.getDefaultStreamVolume(AudioManager.STREAM_SYSTEM));
loadSetting(stmt,Settings.System.VOLUME_VOICE,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_VOICE_CALL));
loadSetting(stmt, Settings.System.VOLUME_ALARM,   AudioService.getDefaultStreamVolume(AudioManager.STREAM_ALARM));
loadSetting(stmt,Settings.System.VOLUME_NOTIFICATION,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_NOTIFICATION));
loadSetting(stmt,Settings.System.VOLUME_BLUETOOTH_SCO,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO));

我們發(fā)現(xiàn)loadSetting中把所有聲音相關(guān)默認(rèn)值大小的都寫(xiě)入數(shù)據(jù)庫(kù)中了,那么我們就可以從這里下手了,在Settings.System.VOLUME_NOTIFICATION的設(shè)置項(xiàng)中我們就把他設(shè)置為0,則系統(tǒng)通知默認(rèn)的聲音就為0 ,我們?cè)倏纯碅udioService.getDefaultStreamVolume這個(gè)方法的實(shí)現(xiàn).

public static int getDefaultStreamVolume(int streamType) {
 return DEFAULT_STREAM_VOLUME[streamType];
}

實(shí)際就是返回了我們?cè)诜桨敢恢邢到y(tǒng)里面默認(rèn)音量大小數(shù)組里面的值。所以方案一和方案二實(shí)際是一個(gè)效果

三、修改ro.config.notification_sound的屬性值

此屬性值的意思就是通知默認(rèn)的音樂(lè)文件文件名,我們?cè)谙到y(tǒng)代碼build/target/product/full_base.mk 中定義了,如果我們不想有聲音那么我們可以將默認(rèn)值改為不存在的文件,則不會(huì)播放通知聲音了,當(dāng)然我們也可以在客戶(hù)定義的mk中使用PRODUCT_PROPERTY_OVERRIDES 去復(fù)寫(xiě)此屬性,將其指定為不存在文件或者為空,這樣就不會(huì)有通知聲音響了。

四、修改默認(rèn)的聲音

系統(tǒng)默認(rèn)了很多的聲音,那么我們要修改一些系統(tǒng)里默認(rèn)的音效文件呢,那么我們可以修改frameworks/base/data/sounds下面文件及文件夾中的聲音文件,如果改了名字記得要在mk中將原來(lái)的替換為新的名字。這下面的mk的作用是將這些音樂(lè)文件全部打包到系統(tǒng)system/media/audio下面各個(gè)模塊的文件,然后在系統(tǒng)開(kāi)機(jī)的時(shí)候,掃描這些文件,將其加入到數(shù)據(jù)庫(kù)中,之后在設(shè)置中更換聲音時(shí),則直接從數(shù)據(jù)庫(kù)中查詢(xún)這些音樂(lè)文件,然后供用戶(hù)選擇。

總結(jié)

系統(tǒng)的媒體這塊是很重也很大的一塊,這里只是一點(diǎn)點(diǎn)皮毛,只是用到時(shí)查到的,要想系統(tǒng)系統(tǒng)學(xué)習(xí)還得很多工作需要研究。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Android實(shí)現(xiàn)網(wǎng)絡(luò)多線(xiàn)程斷點(diǎn)續(xù)傳下載實(shí)例

    Android實(shí)現(xiàn)網(wǎng)絡(luò)多線(xiàn)程斷點(diǎn)續(xù)傳下載實(shí)例

    本示例介紹在Android平臺(tái)下通過(guò)HTTP協(xié)議實(shí)現(xiàn)斷點(diǎn)續(xù)傳下載。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • Android中使用PULL方式解析XML文件深入介紹

    Android中使用PULL方式解析XML文件深入介紹

    本文將詳細(xì)介紹Android如何使用PULL方式解析XML文件,在開(kāi)發(fā)過(guò)程中會(huì)經(jīng)常使用到,有需要的朋友可以參考下
    2012-12-12
  • Android編程開(kāi)發(fā)之在Canvas中利用Path繪制基本圖形(圓形,矩形,橢圓,三角形等)

    Android編程開(kāi)發(fā)之在Canvas中利用Path繪制基本圖形(圓形,矩形,橢圓,三角形等)

    這篇文章主要介紹了Android編程開(kāi)發(fā)之在Canvas中利用Path繪制基本圖形的方法,涉及Android基本的圖形繪制技巧,結(jié)合實(shí)例分析了繪制圓形,矩形,橢圓,三角形等基本圖形的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2016-01-01
  • Android實(shí)現(xiàn)可復(fù)用的選擇頁(yè)面

    Android實(shí)現(xiàn)可復(fù)用的選擇頁(yè)面

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)可復(fù)用的選擇頁(yè)面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • 最新評(píng)論