① 怎么读取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);
这个是获取第一祯的代码,可以参考下