① 怎麼讀取android studio中的渠道
可以參考如下內容:
/**
* 獲取渠道名
* @param ctx 此處習慣性的設置為activity,實際上context就可以
* @return 如果沒有獲取成功,那麼返回值為空
*/
public static String getChannelName(Activity ctx) {
if (ctx == null) {
return null;
}
String channelName = null;
try {
PackageManager packageManager = ctx.getPackageManager();
if (packageManager != null) {
//注意此處為ApplicationInfo 而不是 ActivityInfo,因為友盟設置的meta-data是在application標簽中,而不是某activity標簽中,所以用ApplicationInfo
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
if (applicationInfo != null) {
if (applicationInfo.metaData != null) {
channelName = applicationInfo.metaData.getString("");
}
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return channelName;
}
提取為通用方法:
/**
* 獲取application中指定的meta-data
* @return 如果沒有獲取成功(沒有對應值,或者異常),則返回值為空
*/
public static String getAppMetaData(Context ctx, String key) {
if (ctx == null || TextUtils.isEmpty(key)) {
return null;
}
String resultData = null;
try {
PackageManager packageManager = ctx.getPackageManager();
if (packageManager != null) {
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
if (applicationInfo != null) {
if (applicationInfo.metaData != null) {
resultData = applicationInfo.metaData.getString(key);
}
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return resultData;
}
② android開發里的faq是什麼意思
android常見的FAQ
獲取手機當前的橫豎屏模式。
作用:
使用這個屬性,啟動系統的屏幕兼容程序,對app的UI在大屏幕或小屏幕上進行屏幕兼容處理。
原理:
通常對不同尺寸的屏幕我們要做不同像素的資源來進行UI布局處理,有時候這樣處理也不能達到很好的效果。此時,我們就可以用此選項來控制,在大屏幕上,是否使用系統的兼容模式來放大UI來填充屏幕,或者在小屏幕上進行縮放填充屏幕。
其他:
android metadata:
通常寫在Androidmanifest.xml文件中,以名值對的形式出現在metadata中,通常用於保存一些組件的配置信息,meta中如果全是數字的話默認為int型,其他則為字元型,最終名值對被包裝乘bundle類型,使用bundle去獲取。
③ android開發中怎麼獲取manifest.xml文件中的信息
1. 用Java包給應用程序命名。這個包名是應用程序的唯一標識;
2. 描述應用程序的組件---組成應用程序的Activity、Service、Broadcast Receiver以及Content Provider。它要用每個組件的實現類來命名,並向外發布對應組件功能(例如,組件所能處理的Intent消息)。這些聲明會讓Android系統了解應用程序中組件,以及這些組件被載入的條件。
3. 判斷哪些進程是主應用程序組件。
4. 聲明應用程序所必須的許可權,以便能夠訪問被保護的API,以及能夠跟其他應用程序進行交互。
5. 為了跟應用程序組件進行交互,還聲明了其他要求有的許可權。
6. 列出了能夠提供應用程序運行時的分析和其他信息的Instrumentation類。只有在開發和測試應用程序時才在清單文件中聲明這些類,在應用程序被發布之前,要刪除這些類。
7. 聲明應用程序所要求的最小的Android API級別。
8. 列出應用程序必須鏈接的外部庫。
④ Android使用MediaMetadataRetriever類獲取視頻幀時一直無法正確讀取路徑文件,iamge顯示位null
從API 8開始,新增了一個類:
android.media.ThumbnailUtils這個類提供了3個靜態方法一個用來獲取第一幀得到的Bitmap,2個對圖片進行縮略處理。
public static Bitmap createVideoThumbnail (String filePath, int kind)
第一個參數是文件的路徑,第二個參數是指定圖片的大小,有兩種選擇Thumbnails.MINI_KIND與Thumbnails.MICRO_KIND。
第一種文檔上說大小是512 x 384 ,我用一個MP4格式文件測試得到544 x 960,用一個wmv格式文件測試得到160 x 120。明顯不靠譜。第二種參數兩種格式文件得到的大小都是 96 x 96,這個才是縮略圖。extractThumbnail(Bitmap source, int width, int height, int options)
extractThumbnail(Bitmap source, int width, int height)
這兩種方法都是用來處理Bitmap的大小的,第一個參數是要處理的Bitmap,第二個參數是處理後寬度,第三個是高度,第四個參數options,如果options定義為OPTIONS_RECYCLE_INPUT,則回收資源。也就是說可以用第三種方法把截取到的第一幀的Bitmap轉成任意想要的大小,第三個方法還可以獲取內存卡內圖片的縮略圖。
Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(path1, Thumbnails.MINI_KIND);
bitmap = ThumbnailUtils.extractThumbnail(bitmap, 210, 210);
從API 10開始新增一類MediaMetadataRetriever可以用來獲取媒體文件的信息
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(/sdcard/33.mp4);
Bitmap bitmap = mmr.getFrameAtTime();
image.setImageBitmap(bitmap);
System.out.println(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE)+);
System.out.println(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE)+);
mmr.release();
MediaMetadataRetriever可以獲取任何一幀的縮略圖。
public static Bitmap createVideoThumbnail(String filePath) {
// MediaMetadataRetriever is available on API Level 8
// but is hidden until API Level 10
Class clazz = null;
Object instance = null;
try {
clazz = Class.forName(android.media.MediaMetadataRetriever);
instance = clazz.newInstance();
Method method = clazz.getMethod(setDataSource, String.class);
method.invoke(instance, filePath);
// The method name changes between API Level 9 and 10.
if (Build.VERSION.SDK_INT <= 9) {
return (Bitmap) clazz.getMethod(captureFrame).invoke(instance);
} else {
byte[] data = (byte[]) clazz.getMethod(getEmbeddedPicture).invoke(instance);
if (data != null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
if (bitmap != null) return bitmap;
}
return (Bitmap) clazz.getMethod(getFrameAtTime).invoke(instance);
}
} catch (IllegalArgumentException ex) {
// Assume this is a corrupt video file
} catch (RuntimeException ex) {
// Assume this is a corrupt video file.
} catch (InstantiationException e) {
Log.e(TAG, createVideoThumbnail, e);
} catch (InvocationTargetException e) {
Log.e(TAG, createVideoThumbnail, e);
} catch (ClassNotFoundException e) {
Log.e(TAG, createVideoThumbnail, e);
} catch (NoSuchMethodException e) {
Log.e(TAG, createVideoThumbnail, e);
} catch (IllegalAccessException e) {
Log.e(TAG, createVideoThumbnail, e);
} finally {
try {
if (instance != null) {
clazz.getMethod(release).invoke(instance);
}
} catch (Exception ignored) {
}
}
return null;
}
⑤ android apk怎麼通過metadata拿數據
apk是安裝程序 一般你先你要先安裝apk後綴的游戲 那些gameloft的游戲一般打開後要下載一些數據的 就是通過wifi 估計是種保護手段吧 下載的數據大的得500多M 而且下載的很慢 經常不成功 所以就有一些成功的人把他們下載的數據包拿出來分享 這樣我們安裝玩游戲後 把相應的數據吧復制過去 這樣就省了 下載數據包的過程了
⑥ 【Android音視頻】MediaMetadataRetriever使用
MediaMetadataRetriever是Android原生提供的獲取音視頻文件信息的一個類,我們可以通過這個類的相關方法獲取一些基本信息,如視頻時長、寬高、幀率、方向、某一幀的圖片等。
我們可以通過MediaMetadataRetriever的extractMetadata(int keyCode)的方法獲取一些視頻的基本信息,以下列出一些常用的:
可以通過getFrameAtTime(long timeUs)獲取某一時刻附近的幀圖片;API>=28,可以准確獲取幀圖片,相關方法getFrameAtIndex(...);獲取幀圖可以應用在 視頻封面圖 、 視頻裁剪的縮略圖 等。
MediaMetadataRetriever還是比較常用的,以上只是簡略的列出了MediaMetadataRetriever的一些用法,具體可自行查閱源文件。
⑦ Android 怎麼獲取 umeng 的 渠道信息
Andriod版本APP獲取umeng的渠道信息,可以讓技術人員在程序中嵌入渠道編碼,具體步驟如下:
進入友盟網站,注冊帳號,綁定友盟應用統計;
下載友盟SDK文件,由技術開發人員嵌入到APP程序代碼中,具體操作方法可以參考友盟網站的嵌入指南;
根據安卓版本不同的發布渠道,定義好channel ID;
修改代碼中與channel相關的代碼,比如將<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>中的Channel ID替換為您應用的推廣渠道名稱,channel id自定義。
對應每個渠道生成一一對應的APK安裝包;
將標記好Channel ID的渠道安裝包,在對應的渠道發布;
定時登錄友盟後台查看渠道數據。
⑧ Android中怎麼逐幀讀取視頻文件
MediaMetadataRetriever media = new MediaMetadataRetriever();
media.setDataSource(」視頻的絕對地址「);
Bitmap bitmap = media.getFrameAtTime();
image = (ImageView)this.findViewById(R.id.imageView1);
image.setImageBitmap(bitmap);
這個是獲取第一禎的代碼,可以參考下