android媒體掃描
1. android里,怎麼讓某個特定文件夾不被掃描其中的多媒體文件
在這個目錄下建立一個空白文件 文件名為「.nomedia」(不包含引號)
這個方法只能阻止安卓系統對這個目錄下的媒體文件掃描,如果是第三方的軟體掃描的話就不一定了。
2. 如何屏蔽Android系統對媒體文件掃描
如果文件夾中放入「.nomedia」一段時間後依然沒有顯示出屏蔽效果,或者刪除該特殊文件後,媒體文件沒有正常顯示出來,可以進行下面的操作。「設置」—「應用程序」—找到「媒體存儲」—「清除數據」—重啟手機,重啟後略等幾分鍾就可以看到相冊中更新後的效果了。
3. 如何掃描出Android系統媒體庫中視頻文件
android系統啟動時會去掃描系統文件,並將系統支持的視頻文件(mp4,3gp,wmv)掃描到媒體庫(MediaStore)中,下面代碼演示如何獲得這些文件的信息:
public static List<VideoInfo> sysVideoList = null;// 視頻信息集合
sysVideoList = new ArrayList<VideoInfo>();
setVideoList();
private void setVideoList() {
// MediaStore.Video.Thumbnails.DATA:視頻縮略圖的文件路徑
String[] thumbColumns = { MediaStore.Video.Thumbnails.DATA,
MediaStore.Video.Thumbnails.VIDEO_ID };
// MediaStore.Video.Media.DATA:視頻文件路徑;
// MediaStore.Video.Media.DISPLAY_NAME : 視頻文件名,如 testVideo.mp4
// MediaStore.Video.Media.TITLE: 視頻標題 : testVideo
String[] mediaColumns = { MediaStore.Video.Media._ID,
MediaStore.Video.Media.DATA, MediaStore.Video.Media.TITLE,
MediaStore.Video.Media.MIME_TYPE,
MediaStore.Video.Media.DISPLAY_NAME };
cursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
mediaColumns, null, null, null);
if(cursor==null){
Toast.makeText(SystemVideoChooseActivity.this, "沒有找到可播放視頻文件", 1).show();
return;
}
if (cursor.moveToFirst()) {
do {
VideoInfo info = new VideoInfo();
int id = cursor.getInt(cursor
.getColumnIndex(MediaStore.Video.Media._ID));
Cursor thumbCursor = managedQuery(
MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI,
thumbColumns, MediaStore.Video.Thumbnails.VIDEO_ID
+ "=" + id, null, null);
if (thumbCursor.moveToFirst()) {
info.setThumbPath(thumbCursor.getString(thumbCursor
.getColumnIndex(MediaStore.Video.Thumbnails.DATA)));
}
info.setPath(cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DATA)));
info.setTitle(cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE)));
info.setDisplayName(cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME)));
LogUtil.log(TAG, "DisplayName:"+info.getDisplayName());
info.setMimeType(cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE)));
sysVideoList.add(info);
} while (cursor.moveToNext());
}
}
有一點需要注意的是:系統的媒體庫並不會在我們添加視頻文件後自動更新,我們如何去手動掃描媒體庫,或者重啟系統才能從媒體庫中得到更新的視頻文件:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
+ Environment.getExternalStorageDirectory())));
4. 怎麼解決android media process佔用CPU很高,媒體耗電的問題
Android手機有時待機時反常地耗電,如果通過電源管理看到是媒體進程特別耗電,原因在於Android系統的媒體掃描功能,正常情況下,這個功能掃描手機里的媒體文件(圖片,音樂,視頻等)(通常只掃描一遍),比如你打開相冊,會自動列出手機里的圖片。但如果存在媒體文件有錯誤,它就會一直掃描,CPU佔用極高,因此即使待機也十分耗電。如果是這種情況,那這篇經驗很值得一看哦( ̄▽ ̄),有兩種方法,一種需要root
工具/原料
異常耗電的Android手機
(可能會用到)軟體System Tuner Pro,網路可以找到
方法/步驟
確認是否是媒體掃描進程造成的耗電(我的是samsung,如果是其它手機也可以找到對應步驟)
在-設置-電池,可以看到媒體耗電異常(我截圖截得早)如果確實是這個問題的話,你很有可能看到媒體耗的電佔70%,一般來說媒體進程耗電排到比較靠前的地方很不正常
查看CPU佔用情況(如果手機不知道怎麼顯示CPU也沒關系,那就只有通過實際效果來看是否有效了)
在-設置-開發者選項里找到「顯示CPU使用情況」,如圖就可以看到右上角的進程,如果看到始終有android.process.media這一項,恭喜你,你手機的這個問題馬上就可以解決了(反正和media有關的應該就是)
方法一 刪掉出錯文件或屏蔽(不需root)
根據之前的解釋,我們可以找到那個出錯的文件然後刪掉(或者屏蔽(等會兒再說))
一般情況下很有可能是手機的外置SD上的問題,可以先備份再格式化那個外置SD卡,
所以首先可以試試把外置SD卡取下來
如果不是SD卡的話就很難找了,不過我們有其他方法來解決
屏蔽媒體掃描的方法
創建一個名為「.nomedia」的文件夾,這個文件夾裡面的媒體就不會被掃描了
或者在已有文件夾的根目錄下放置一個名為.nomedia的文件也可以讓該進程不掃描這個文件夾(不過屏蔽某個文件夾之後就不是很方便,比如在相冊裡面就看不到這個文件夾里的圖片了)(如果.nomedia文件放在SD卡根目錄就所有文件都不會被掃描了)(被屏蔽之後只是手機自動的掃描掃描不到,你自己還是可以從文件目錄里找到)
方法二 手動管理該進程(需要root)
上述兩個方法需要找到那個有問題的文件(或所在目錄),這樣比較麻煩
我們可以下載一個第三方軟體System Tuner Pro來管理一下這個進程
安裝好System Tuner Pro之後,打開
點「事件控制」,它會掃描一會兒,等一會就行
找到「媒體存儲」,點一下
裡面有個MEDIA_SCANNER_SCAN_FILE,意思大概是媒體掃描器掃描文件
取消勾選它,成功後CPU上應該就沒有剛才那個com.android.media了
到這里已經強制關閉了該進程,這樣雖然耗電的問題解決了,但我們也享受不了手機自動幫你搜索媒體文件的便捷了,不過沒關系,再勾選打開那個進程,發現CPU里那個掃描進程不會再次出現,掃描功能也正常了,是不是很好╮(╯▽╰)╭
(System Tuner Pro還有其它功能我也不是很熟悉,不過有一個監控功能,點一下右上角的開始監控就行,過一會兒再看監控分析,也可以看到是否有某個進程不正常)
如果解決了你的問題,幫我贊一個吧O(∩_∩)O
5. android4.1.2 媒體耗電嚴重,如圖,求高人指點,我才用了不到一個小時,電池現在捱不到半天,救命
媒體那個進程,主要是會一直去掃描手機上的文件夾,目的是發現媒體文件。所以首先,手機上最好不要裝太多的媒體文件,如mp3。另外,包含有較多媒體文件的應用,沒需要的,最好也卸了,比如一些英文學習應用,有很多音頻文件。這樣可以盡量減少媒體掃描的內容,減少耗電。我重裝ROM後,沒去裝mp3和那些應用,就沒發現媒體耗電了。另外,可以裝個電池管理軟體,根據個人使用情況設置下電池的使用模式,減少耗電(我最近剛用的91桌面的「電池管理」,發現還不錯,可以試試)。
避免媒體文件掃描,之前網路到還有另外一種方式,就是用文件管理器在文件夾下增加一個文件,命名我忘了,反正是個「.XXXX」(可以自己搜索下)。這種方式我也有試過,個人覺得操作比較麻煩,另外,好像也沒啥效果。。
綜上,最簡單的方式就是重刷ROM,少裝不必要的應用,手機里沒用到的媒體文件少放置些,或者盡量放在幾個文件夾之內。
6. nomedia可以刪嗎
是用來屏蔽媒體軟體掃描的。在文件夾里放了這個文件,播放軟體或者閱讀軟體就掃描不到這個文件夾的東西了(不過現在的軟體都可以選擇要掃描的文件夾,所以用處不大)。所以放音樂的文件夾千萬不要放這個.nomedia,還有看看SD卡根目錄里有沒有,有的話,整個SD卡里的東西都掃描不到了……
可以刪除的
7. Android Framework media providers 隨筆
遇到一個問題是多媒體掃描失敗:
從logcat 中可以看到的時候 這個服務 com.android.providers.media/.MediaScannerService 啟動超時了
1、com.android.providers.media 和 com.android.providers.media/.MediaScannerService 到底是在哪裡定義聲明的?
2、Why com.android.providers.media/.MediaProvider is crashing?
帶著問題擴展開來學習,遇到什麼記錄什麼,慢慢搭建系統的體系
平台:Android 7.1
1、com.android.providers.media 與 MediaScannerService
看 frameworks.java 的構造方法和connect 方法, 其注釋和介面實現可以回答之前的疑問
如下介面通過
new ComponentName("com.android.providers.media",
"com.android.providers.media.MediaScannerService"));
而 MediaScannerService 我們只需要看如下文件中的注釋就對其流程有一個清晰的了解
frameworks.java
2、Why com.android.providers.media/.MediaProvider is crashing?
在
frameworks.java getContentProviderImpl函數中會對 OomAdj 優先順序進行調整,如果調整失敗和判斷進程不可活, 則調用 appDiedLocked kill 其進程
其實最後之所以把文章標題寫為隨筆,就是還有未完成的事情要做。
雖然把 1 的疑問找到地方了,但是其實是引出來了更多疑問,什麼時候調用,其他層邏輯實現
轉一篇文章看看 Android開發——MediaProvider源碼分析(1)
同樣2 也是,OomAdj 為什麼會調整失敗,調整失敗後怎麼做 等等...
這些都是會引發新的思考,並且跟自身已有的知識點聯系起來,所以系統知識技能需要不斷思考,實踐學習
8. android 讓自帶 媒體播放器 不掃描指定文件夾
..................................................
要這么麻煩么..............手機在sd卡上會自動生成一個「android」文件夾,進去第一層你就能看到一個「.nonmedia」文件,把它復制,粘貼到你想不掃描的文件夾就好了。
當然,治本的辦法是ROOT機器,然後卸掉系統的多媒體查看器,使用第三方軟體,如快圖瀏覽,MVIDEOPLAYER等,都支持排除文件夾功能。
還有疑問請補充..........
9. android 平板上掃描外置U盤上的多媒體文件 怎麼操作
Nexus Media Importer軟體載讀取面媒體文件英文版蛋疼
10. 安卓系統掃描是怎麼樣的
開機掃描,每次開機,系統會發送廣播,掃描所有位置的媒體文件,包括音頻、視頻和圖片,並解析頭文件,如mp3的歌手,專輯等信息,然後存放在系統內建的資料庫中。android提供了相應的API來供開發者執行資料庫操作。