public static ArrayList<PFile> batchBuildThumbnail(final Context ctx, final ArrayList<File> files) {
ArrayList<PFile> result = new ArrayList<PFile>();
for (File f : files) {
PFile pf = new PFile();
try {
if (f.exists() && f.canRead()) {
//取出视频的一帧图像
Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(ctx, f.getAbsolutePath(), Video.Thumbnails.MINI_KIND);
if (bitmap == null) {
//缩略图创建失败
bitmap = Bitmap.createBitmap(ThumbnailUtils.TARGET_SIZE_MINI_THUMBNAIL_WIDTH, ThumbnailUtils.TARGET_SIZE_MINI_THUMBNAIL_HEIGHT, Bitmap.Config.RGB_565);
Log.e(TAG, "batchBuildThumbnail createBitmap faild : " + f.getAbsolutePath());
}
pf.width = bitmap.getWidth();
pf.height = bitmap.getHeight();
//缩略图
bitmap = ThumbnailUtils.extractThumbnail(bitmap, ThumbnailUtils.dipToPX(ctx, ThumbnailUtils.TARGET_SIZE_MICRO_THUMBNAIL_WIDTH), ThumbnailUtils.dipToPX(ctx, ThumbnailUtils.TARGET_SIZE_MICRO_THUMBNAIL_HEIGHT), ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
if (bitmap != null) {
File thum = new File(f.getParent(), f.getName() + ".jpg");
pf.thumb = thum.getAbsolutePath();
//thum.createNewFile();
FileOutputStream iStream = new FileOutputStream(thum);
bitmap.compress(Bitmap.CompressFormat.JPEG, 85, iStream);
iStream.close();
}
if (bitmap != null)
bitmap.recycle();
}
} catch (Exception e) {
Log.e(TAG, e);
continue;
} finally {
result.add(pf);
}
}
return result;
}
<receiver android:name="io.vov.vitamio.MediaScannerReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.MEDIA_MOUNTED" /> <data android:scheme="file" /> </intent-filter> <intent-filter> <action android:name="com.yixia.vitamio.action.MEDIA_SCANNER_SCAN_FILE" /> <action android:name="com.yixia.vitamio.action.MEDIA_SCANNER_SCAN_DIRECTORY" /> <data android:scheme="file" /> </intent-filter> </receiver> <service android:name="io.vov.vitamio.MediaScannerService" android:exported="false" > <intent-filter> <action android:name="io.vov.vitamio.IMediaScannerService" /> </intent-filter> </service> <service android:name="io.vov.vitamio.VitamioService" android:exported="false" > <intent-filter> <action android:name="io.vov.vitamio.IVitamioService" /> </intent-filter> </service>
if (!io.vov.vitamio.LibsChecker.checkVitamioLibs(this, getClass().getName(), R.string.init_decoders, R.raw.libarm))
return;
OPreference pref = new OPreference(this);
//首次运行,扫描SD卡
if (pref.getBoolean(PREF_KEY_FIRST, true)) {
getApplicationContext().startService(new Intent(getApplicationContext(), MediaScannerService.class).putExtra(MediaScannerService.EXTRA_DIRECTORY, Environment.getExternalStorageDirectory().getAbsolutePath()));
pref.putBooleanAndCommit(PREF_KEY_FIRST, false);
}
private static final String[] PROJECTION_MEDIA = new String[] { Video.Media._ID, Video.Media.TITLE, Video.Media.TITLE_KEY, Video.Media.SIZE, Video.Media.DURATION, Video.Media.DATA, Video.Media.WIDTH, Video.Media.HEIGHT };
private static final String ORDER_MEDIA_TITLE = Video.Media.TITLE_KEY + " COLLATE NOCASE ASC";
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
Log.e(TAG, "onCreateLoader");
return new CursorLoader(mParent, Video.Media.CONTENT_URI, PROJECTION_MEDIA, null, null, ORDER_MEDIA_TITLE);
}
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor newCursor) {
Log.e(TAG, "onLoadFinished" + newCursor.getCount());
mAdapter.swapCursor(newCursor);
mListView.setSelectionFromTop(mVisiablePosition, mVisiableTop);
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
Log.e(TAG, "onLoaderReset");
mAdapter.swapCursor(null);
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有