android.provider.MediaStore.Video Java Examples

The following examples show how to use android.provider.MediaStore.Video. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: BitmapManager.java    From droidddle with Apache License 2.0 6 votes vote down vote up
public synchronized void cancelThreadDecoding(Thread t, ContentResolver cr) {
    ThreadStatus status = getOrCreateThreadStatus(t);
    status.mState = State.CANCEL;
    if (status.mOptions != null) {
        status.mOptions.requestCancelDecode();
    }

    // Wake up threads in waiting list
    notifyAll();

    // Since our cancel request can arrive MediaProvider earlier than getThumbnail request,
    // we use mThumbRequesting flag to make sure our request does cancel the request.
    try {
        synchronized (status) {
            while (status.mThumbRequesting) {
                Images.Thumbnails.cancelThumbnailRequest(cr, -1, t.getId());
                Video.Thumbnails.cancelThumbnailRequest(cr, -1, t.getId());
                status.wait(200);
            }
        }
    } catch (InterruptedException ex) {
        // ignore it.
    }
}
 
Example #2
Source File: StorageProvider.java    From FireFiles with Apache License 2.0 6 votes vote down vote up
protected long getVideoForBucketCleared(long bucketId)
        throws FileNotFoundException {
    final ContentResolver resolver = getContext().getContentResolver();
    Cursor cursor = null;
    try {
        cursor = resolver.query(Video.Media.EXTERNAL_CONTENT_URI,
                VideosBucketThumbnailQuery.PROJECTION, VideoColumns.BUCKET_ID + "=" + bucketId,
                null, VideoColumns.DATE_MODIFIED + " DESC");
        if (cursor.moveToFirst()) {
            return cursor.getLong(VideosBucketThumbnailQuery._ID);
        }
    } finally {
        IoUtils.closeQuietly(cursor);
    }
    throw new FileNotFoundException("No video found for bucket");
}
 
Example #3
Source File: StorageProvider.java    From FireFiles with Apache License 2.0 6 votes vote down vote up
protected AssetFileDescriptor openVideoThumbnailCleared(long id, CancellationSignal signal)
        throws FileNotFoundException {
    final ContentResolver resolver = getContext().getContentResolver();
    Cursor cursor = null;
    try {
        cursor = resolver.query(Video.Thumbnails.EXTERNAL_CONTENT_URI,
                VideoThumbnailQuery.PROJECTION, Video.Thumbnails.VIDEO_ID + "=" + id, null,
                null);
        if (cursor.moveToFirst()) {
            final String data = cursor.getString(VideoThumbnailQuery._DATA);
            return new AssetFileDescriptor(ParcelFileDescriptor.open(
                    new File(data), ParcelFileDescriptor.MODE_READ_ONLY), 0,
                    AssetFileDescriptor.UNKNOWN_LENGTH);
        }
    } finally {
        IoUtils.closeQuietly(cursor);
    }
    return null;
}
 
Example #4
Source File: StorageProvider.java    From FireFiles with Apache License 2.0 6 votes vote down vote up
protected AssetFileDescriptor openOrCreateVideoThumbnailCleared(
        long id, CancellationSignal signal) throws FileNotFoundException {
    final ContentResolver resolver = getContext().getContentResolver();

    AssetFileDescriptor afd = openVideoThumbnailCleared(id, signal);
    if (afd == null) {
        // No thumbnail yet, so generate. This is messy, since we drop the
        // Bitmap on the floor, but its the least-complicated way.
        final BitmapFactory.Options opts = new BitmapFactory.Options();
        opts.inJustDecodeBounds = true;
        Video.Thumbnails.getThumbnail(resolver, id, Video.Thumbnails.MINI_KIND, opts);

        afd = openVideoThumbnailCleared(id, signal);
    }

    return afd;
}
 
Example #5
Source File: StorageProvider.java    From FireFiles with Apache License 2.0 6 votes vote down vote up
protected long getVideoForBucketCleared(long bucketId)
        throws FileNotFoundException {
    final ContentResolver resolver = getContext().getContentResolver();
    Cursor cursor = null;
    try {
        cursor = resolver.query(Video.Media.EXTERNAL_CONTENT_URI,
                VideosBucketThumbnailQuery.PROJECTION, VideoColumns.BUCKET_ID + "=" + bucketId,
                null, VideoColumns.DATE_MODIFIED + " DESC");
        if (cursor.moveToFirst()) {
            return cursor.getLong(VideosBucketThumbnailQuery._ID);
        }
    } finally {
        IoUtils.closeQuietly(cursor);
    }
    throw new FileNotFoundException("No video found for bucket");
}
 
Example #6
Source File: StorageProvider.java    From FireFiles with Apache License 2.0 6 votes vote down vote up
protected AssetFileDescriptor openVideoThumbnailCleared(long id, CancellationSignal signal)
        throws FileNotFoundException {
    final ContentResolver resolver = getContext().getContentResolver();
    Cursor cursor = null;
    try {
        cursor = resolver.query(Video.Thumbnails.EXTERNAL_CONTENT_URI,
                VideoThumbnailQuery.PROJECTION, Video.Thumbnails.VIDEO_ID + "=" + id, null,
                null);
        if (cursor.moveToFirst()) {
            final String data = cursor.getString(VideoThumbnailQuery._DATA);
            return new AssetFileDescriptor(ParcelFileDescriptor.open(
                    new File(data), ParcelFileDescriptor.MODE_READ_ONLY), 0,
                    AssetFileDescriptor.UNKNOWN_LENGTH);
        }
    } finally {
        IoUtils.closeQuietly(cursor);
    }
    return null;
}
 
Example #7
Source File: StorageProvider.java    From FireFiles with Apache License 2.0 6 votes vote down vote up
protected AssetFileDescriptor openOrCreateVideoThumbnailCleared(
        long id, CancellationSignal signal) throws FileNotFoundException {
    final ContentResolver resolver = getContext().getContentResolver();

    AssetFileDescriptor afd = openVideoThumbnailCleared(id, signal);
    if (afd == null) {
        // No thumbnail yet, so generate. This is messy, since we drop the
        // Bitmap on the floor, but its the least-complicated way.
        final BitmapFactory.Options opts = new BitmapFactory.Options();
        opts.inJustDecodeBounds = true;
        Video.Thumbnails.getThumbnail(resolver, id, Video.Thumbnails.MINI_KIND, opts);

        afd = openVideoThumbnailCleared(id, signal);
    }

    return afd;
}
 
Example #8
Source File: StorageProvider.java    From FireFiles with Apache License 2.0 6 votes vote down vote up
protected long getVideoForBucketCleared(long bucketId)
        throws FileNotFoundException {
    final ContentResolver resolver = getContext().getContentResolver();
    Cursor cursor = null;
    try {
        cursor = resolver.query(Video.Media.EXTERNAL_CONTENT_URI,
                VideosBucketThumbnailQuery.PROJECTION, VideoColumns.BUCKET_ID + "=" + bucketId,
                null, VideoColumns.DATE_MODIFIED + " DESC");
        if (cursor.moveToFirst()) {
            return cursor.getLong(VideosBucketThumbnailQuery._ID);
        }
    } finally {
        IoUtils.closeQuietly(cursor);
    }
    throw new FileNotFoundException("No video found for bucket");
}
 
Example #9
Source File: StorageProvider.java    From FireFiles with Apache License 2.0 6 votes vote down vote up
protected AssetFileDescriptor openVideoThumbnailCleared(long id, CancellationSignal signal)
        throws FileNotFoundException {
    final ContentResolver resolver = getContext().getContentResolver();
    Cursor cursor = null;
    try {
        cursor = resolver.query(Video.Thumbnails.EXTERNAL_CONTENT_URI,
                VideoThumbnailQuery.PROJECTION, Video.Thumbnails.VIDEO_ID + "=" + id, null,
                null);
        if (cursor.moveToFirst()) {
            final String data = cursor.getString(VideoThumbnailQuery._DATA);
            return new AssetFileDescriptor(ParcelFileDescriptor.open(
                    new File(data), ParcelFileDescriptor.MODE_READ_ONLY), 0,
                    AssetFileDescriptor.UNKNOWN_LENGTH);
        }
    } finally {
        IoUtils.closeQuietly(cursor);
    }
    return null;
}
 
Example #10
Source File: StorageProvider.java    From FireFiles with Apache License 2.0 6 votes vote down vote up
protected AssetFileDescriptor openOrCreateVideoThumbnailCleared(
        long id, CancellationSignal signal) throws FileNotFoundException {
    final ContentResolver resolver = getContext().getContentResolver();

    AssetFileDescriptor afd = openVideoThumbnailCleared(id, signal);
    if (afd == null) {
        // No thumbnail yet, so generate. This is messy, since we drop the
        // Bitmap on the floor, but its the least-complicated way.
        final BitmapFactory.Options opts = new BitmapFactory.Options();
        opts.inJustDecodeBounds = true;
        Video.Thumbnails.getThumbnail(resolver, id, Video.Thumbnails.MINI_KIND, opts);

        afd = openVideoThumbnailCleared(id, signal);
    }

    return afd;
}
 
Example #11
Source File: MediaRepository.java    From mollyim-android with GNU General Public License v3.0 6 votes vote down vote up
@WorkerThread
private @NonNull List<Media> getMediaInBucket(@NonNull Context context, @NonNull String bucketId) {
  if (!Permissions.hasAll(context, Manifest.permission.READ_EXTERNAL_STORAGE)) {
    return Collections.emptyList();
  }

  List<Media> images = getMediaInBucket(context, bucketId, Images.Media.EXTERNAL_CONTENT_URI, true);
  List<Media> videos = getMediaInBucket(context, bucketId, Video.Media.EXTERNAL_CONTENT_URI, false);
  List<Media> media  = new ArrayList<>(images.size() + videos.size());

  media.addAll(images);
  media.addAll(videos);
  Collections.sort(media, (o1, o2) -> Long.compare(o2.getDate(), o1.getDate()));

  return media;
}
 
Example #12
Source File: BitmapManager.java    From droidddle with Apache License 2.0 6 votes vote down vote up
public Bitmap getThumbnail(ContentResolver cr, long origId, int kind, BitmapFactory.Options options, boolean isVideo) {
    Thread t = Thread.currentThread();
    ThreadStatus status = getOrCreateThreadStatus(t);

    if (!canThreadDecoding(t)) {
        Log.d(TAG, "Thread " + t + " is not allowed to decode.");
        return null;
    }

    try {
        synchronized (status) {
            status.mThumbRequesting = true;
        }
        if (isVideo) {
            return Video.Thumbnails.getThumbnail(cr, origId, t.getId(), kind, null);
        } else {
            return Images.Thumbnails.getThumbnail(cr, origId, t.getId(), kind, null);
        }
    } finally {
        synchronized (status) {
            status.mThumbRequesting = false;
            status.notifyAll();
        }
    }
}
 
Example #13
Source File: MediaUtils.java    From android-utils with MIT License 6 votes vote down vote up
@Nullable
/**
 * Creates external content:// scheme uri to save the videos at.
 **/
public static Uri createVideoUri(Context ctx) throws IOException {

    if (ctx == null) {
        throw new NullPointerException("Context cannot be null");
    }

    Uri imageUri = null;

    ContentValues values = new ContentValues();
    values.put(MediaStore.MediaColumns.TITLE, "");
    values.put(MediaStore.Images.ImageColumns.DESCRIPTION, "");
    imageUri = ctx.getContentResolver().insert(Video.Media.EXTERNAL_CONTENT_URI, values);

    return imageUri;
}
 
Example #14
Source File: Utils.java    From android-utils with MIT License 6 votes vote down vote up
@Nullable
/**
 * @deprecated Use {@link MediaUtils#createVideoUri(Context)}
 * Creates external content:// scheme uri to save the videos at.
 */
public static Uri createVideoUri(Context ctx) throws IOException {

    if (ctx == null) {
        throw new NullPointerException("Context cannot be null");
    }

    Uri imageUri;

    ContentValues values = new ContentValues();
    values.put(MediaColumns.TITLE, "");
    values.put(ImageColumns.DESCRIPTION, "");
    imageUri = ctx.getContentResolver().insert(Video.Media.EXTERNAL_CONTENT_URI, values);

    return imageUri;
}
 
Example #15
Source File: PBJournalAdapter.java    From client-android with GNU General Public License v2.0 6 votes vote down vote up
@Override
public boolean handleMessage(Message message) {
    // done on async thread
    final View view = (View) message.obj;
    final ImageView thumbImageView = (ImageView) view.findViewById(R.id.thumbnail);
    Bitmap bitmap = Images.Thumbnails.getThumbnail(context.getContentResolver(),
            message.what, Images.Thumbnails.MICRO_KIND, null);
    if (bitmap == null) {
        bitmap = Video.Thumbnails.getThumbnail(context.getContentResolver(),
                message.what, Video.Thumbnails.MICRO_KIND, null);
    }
    final Bitmap fBitmap = bitmap;

    // back on UI thread to set the bitmap to the view
    new Handler(context.getMainLooper()).post(new Runnable() {
        @Override
        public void run() {
            thumbImageView.setImageBitmap(fBitmap);
        }
    });

    return true;
}
 
Example #16
Source File: Util.java    From FFmpegRecorder with GNU General Public License v3.0 6 votes vote down vote up
public static String createFinalPath(Context context)
{
	long dateTaken = System.currentTimeMillis();
	String title = CONSTANTS.FILE_START_NAME + dateTaken;
	String filename = title + CONSTANTS.VIDEO_EXTENSION;
	String filePath = genrateFilePath(context,String.valueOf(dateTaken), true, null);
	
	ContentValues values = new ContentValues(7);
	values.put(Video.Media.TITLE, title);
	values.put(Video.Media.DISPLAY_NAME, filename);
	values.put(Video.Media.DATE_TAKEN, dateTaken);
	values.put(Video.Media.MIME_TYPE, "video/3gpp");
	values.put(Video.Media.DATA, filePath);
	videoContentValues = values;

	return filePath;
}
 
Example #17
Source File: BitmapManager.java    From reader with MIT License 6 votes vote down vote up
public synchronized void cancelThreadDecoding(Thread t, ContentResolver cr) {
    ThreadStatus status = getOrCreateThreadStatus(t);
    status.mState = State.CANCEL;
    if (status.mOptions != null) {
        status.mOptions.requestCancelDecode();
    }

    // Wake up threads in waiting list
    notifyAll();

    // Since our cancel request can arrive MediaProvider earlier than getThumbnail request,
    // we use mThumbRequesting flag to make sure our request does cancel the request.
    try {
        synchronized (status) {
            while (status.mThumbRequesting) {
                Images.Thumbnails.cancelThumbnailRequest(cr, -1, t.getId());
                Video.Thumbnails.cancelThumbnailRequest(cr, -1, t.getId());
                status.wait(200);
            }
        }
    } catch (InterruptedException ex) {
        // ignore it.
    }
}
 
Example #18
Source File: BitmapManager.java    From reader with MIT License 6 votes vote down vote up
public synchronized void cancelThreadDecoding(Thread t, ContentResolver cr) {
    ThreadStatus status = getOrCreateThreadStatus(t);
    status.mState = State.CANCEL;
    if (status.mOptions != null) {
        status.mOptions.requestCancelDecode();
    }

    // Wake up threads in waiting list
    notifyAll();

    // Since our cancel request can arrive MediaProvider earlier than getThumbnail request,
    // we use mThumbRequesting flag to make sure our request does cancel the request.
    try {
        synchronized (status) {
            while (status.mThumbRequesting) {
                Images.Thumbnails.cancelThumbnailRequest(cr, -1, t.getId());
                Video.Thumbnails.cancelThumbnailRequest(cr, -1, t.getId());
                status.wait(200);
            }
        }
    } catch (InterruptedException ex) {
        // ignore it.
    }
}
 
Example #19
Source File: Util.java    From VideoRecorder with Apache License 2.0 6 votes vote down vote up
public static String createFinalPath(Context context)
{
	long dateTaken = System.currentTimeMillis();
	String title = CONSTANTS.FILE_START_NAME + dateTaken;
	String filename = title + CONSTANTS.VIDEO_EXTENSION;
	String filePath = genrateFilePath(context,String.valueOf(dateTaken), true, null);
	
	ContentValues values = new ContentValues(7);
	values.put(Video.Media.TITLE, title);
	values.put(Video.Media.DISPLAY_NAME, filename);
	values.put(Video.Media.DATE_TAKEN, dateTaken);
	values.put(Video.Media.MIME_TYPE, "video/3gpp");
	values.put(Video.Media.DATA, filePath);
	videoContentValues = values;

	return filePath;
}
 
Example #20
Source File: UploadService.java    From flickr-uploader with GNU General Public License v2.0 6 votes vote down vote up
@Override
public void onCreate() {
	super.onCreate();
	instance = this;
	LOG.debug("Service created…");
	running = true;
	getContentResolver().registerContentObserver(Images.Media.EXTERNAL_CONTENT_URI, true, imageTableObserver);
	getContentResolver().registerContentObserver(Video.Media.EXTERNAL_CONTENT_URI, true, imageTableObserver);

	if (thread == null || !thread.isAlive()) {
		thread = new Thread(new UploadRunnable());
		thread.start();
	}
	IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
	registerReceiver(batteryReceiver, filter);
	checkNewFiles();
	Notifications.init();
}
 
Example #21
Source File: BucketHelper.java    From medialibrary with Apache License 2.0 6 votes vote down vote up
private static BucketEntry[] loadBucketEntriesFromImagesAndVideoTable(
        ThreadPool.JobContext jc, ContentResolver resolver, int type) {
    HashMap<Integer, BucketEntry> buckets = new HashMap<Integer, BucketEntry>(64);
    if ((type & MediaObject.MEDIA_TYPE_IMAGE) != 0) {
        updateBucketEntriesFromTable(
                jc, resolver, Images.Media.EXTERNAL_CONTENT_URI, buckets);
    }
    if ((type & MediaObject.MEDIA_TYPE_VIDEO) != 0) {
        updateBucketEntriesFromTable(
                jc, resolver, Video.Media.EXTERNAL_CONTENT_URI, buckets);
    }
    BucketEntry[] entries = buckets.values().toArray(new BucketEntry[buckets.size()]);
    Arrays.sort(entries, new Comparator<BucketEntry>() {
        @Override
        public int compare(BucketEntry a, BucketEntry b) {
            // sorted by dateTaken in descending order
            return b.dateTaken - a.dateTaken;
        }
    });
    return entries;
}
 
Example #22
Source File: LocalVideo.java    From medialibrary with Apache License 2.0 6 votes vote down vote up
public LocalVideo(Path path, MediaDataContext context, int id) {
    super(path, nextVersionNumber());
    mApplication = context;
    ContentResolver resolver = mApplication.getContentResolver();
    Uri uri = Video.Media.EXTERNAL_CONTENT_URI;
    Cursor cursor = LocalAlbum.getItemCursor(resolver, uri, PROJECTION, id);
    if (cursor == null) {
        throw new RuntimeException("cannot get cursor for: " + path);
    }
    try {
        if (cursor.moveToNext()) {
            loadFromCursor(cursor);
        } else {
            throw new RuntimeException("cannot find data for: " + path);
        }
    } finally {
        cursor.close();
    }
}
 
Example #23
Source File: VideoModule.java    From Camera2 with Apache License 2.0 6 votes vote down vote up
private void saveVideo()
{
    if (mVideoFileDescriptor == null)
    {
        long duration = SystemClock.uptimeMillis() - mRecordingStartTime;
        if (duration > 0)
        {
            //
        } else
        {
            Log.w(TAG, "Video duration <= 0 : " + duration);
        }
        mCurrentVideoValues.put(Video.Media.SIZE, new File(mCurrentVideoFilename).length());
        mCurrentVideoValues.put(Video.Media.DURATION, duration);
        getServices().getMediaSaver().addVideo(mCurrentVideoFilename,
                mCurrentVideoValues, mOnVideoSavedListener);
        logVideoCapture(duration);
    }
    mCurrentVideoValues = null;
}
 
Example #24
Source File: StorageProvider.java    From FireFiles with Apache License 2.0 5 votes vote down vote up
protected long getVideoForPathCleared(String path)throws FileNotFoundException {
    final ContentResolver resolver = getContext().getContentResolver();
    Cursor cursor = null;
    try {
        cursor = resolver.query(Video.Media.EXTERNAL_CONTENT_URI,
                VideosBucketThumbnailQuery.PROJECTION, VideoColumns.DATA + "=? ",
                new String[] { path.replaceAll("'", "''") }, VideoColumns.DATE_MODIFIED + " DESC");
        if (cursor.moveToFirst()) {
            return cursor.getLong(VideosBucketThumbnailQuery._ID);
        }
    } finally {
        IoUtils.closeQuietly(cursor);
    }
    throw new FileNotFoundException("No video found for bucket");
}
 
Example #25
Source File: StorageProvider.java    From FireFiles with Apache License 2.0 5 votes vote down vote up
protected long getVideoForPathCleared(String path)throws FileNotFoundException {
    final ContentResolver resolver = getContext().getContentResolver();
    Cursor cursor = null;
    try {
        cursor = resolver.query(Video.Media.EXTERNAL_CONTENT_URI,
                VideosBucketThumbnailQuery.PROJECTION, VideoColumns.DATA + "=? ",
                new String[] { path.replaceAll("'", "''") }, VideoColumns.DATE_MODIFIED + " DESC");
        if (cursor.moveToFirst()) {
            return cursor.getLong(VideosBucketThumbnailQuery._ID);
        }
    } finally {
        IoUtils.closeQuietly(cursor);
    }
    throw new FileNotFoundException("No video found for bucket");
}
 
Example #26
Source File: LocalAlbum.java    From medialibrary with Apache License 2.0 5 votes vote down vote up
@Override
public Uri getContentUri() {
    if (mIsImage) {
        return Images.Media.EXTERNAL_CONTENT_URI.buildUpon()
                .appendQueryParameter(LocalSource.KEY_BUCKET_ID,
                        String.valueOf(mBucketId)).build();
    } else {
        return Video.Media.EXTERNAL_CONTENT_URI.buildUpon()
                .appendQueryParameter(LocalSource.KEY_BUCKET_ID,
                        String.valueOf(mBucketId)).build();
    }
}
 
Example #27
Source File: LocalAlbum.java    From medialibrary with Apache License 2.0 5 votes vote down vote up
public LocalAlbum(Path path, MediaDataContext application, int bucketId,
                  boolean isImage, String name) {
    super(path, nextVersionNumber());
    mApplication = application;
    mResolver = application.getContentResolver();
    mBucketId = bucketId;
    mName = name;
    mIsImage = isImage;

    if (isImage) {
        mWhereClause = ImageColumns.BUCKET_ID + " = ?";
        mOrderClause = ImageColumns.DATE_TAKEN + " DESC, "
                + ImageColumns._ID + " DESC";
        mBaseUri = Images.Media.EXTERNAL_CONTENT_URI;
        mProjection = LocalImage.PROJECTION;
        mItemPath = LocalImage.ITEM_PATH;
    } else {
        mWhereClause = VideoColumns.BUCKET_ID + " = ?";
        mOrderClause = VideoColumns.DATE_TAKEN + " DESC, "
                + VideoColumns._ID + " DESC";
        mBaseUri = Video.Media.EXTERNAL_CONTENT_URI;
        mProjection = LocalVideo.PROJECTION;
        mItemPath = LocalVideo.ITEM_PATH;
    }

    mNotifier = new ChangeNotifier(this, mBaseUri, application);
}
 
Example #28
Source File: MediaUtils.java    From android-utils with MIT License 5 votes vote down vote up
/**
 * Get runtime duration of media such as audio or video in milliseconds
 ****/
public static long getDuration(Context ctx, Uri mediaUri) {
    Cursor cur = ctx.getContentResolver().query(mediaUri, new String[]{Video.Media.DURATION}, null, null, null);
    long duration = -1;

    try {
        if (cur != null && cur.getCount() > 0) {
            while (cur.moveToNext()) {
                duration = cur.getLong(cur.getColumnIndex(Video.Media.DURATION));

                if (duration == 0)
                    Log.w(TAG, "#getMediaDuration The image size was found to be 0. Reason: UNKNOWN");

            }    // end while
        } else if (cur.getCount() == 0) {
            Log.e(TAG, "#getMediaDuration cur size is 0. File may not exist");
        } else {
            Log.e(TAG, "#getMediaDuration cur is null");
        }
    } finally {
        if (cur != null && !cur.isClosed()) {
            cur.close();
        }
    }

    return duration;
}
 
Example #29
Source File: MediaSaverImpl.java    From Camera2 with Apache License 2.0 5 votes vote down vote up
@Override
protected Uri doInBackground(Void... v)
{
    Uri uri = null;
    try
    {
        Uri videoTable = Uri.parse(VIDEO_BASE_URI);
        uri = resolver.insert(videoTable, values);

        // Rename the video file to the final name. This avoids other
        // apps reading incomplete data.  We need to do it after we are
        // certain that the previous insert to MediaProvider is completed.
        String finalName = values.getAsString(Video.Media.DATA);
        File finalFile = new File(finalName);
        if (new File(path).renameTo(finalFile))
        {
            path = finalName;
        }
        resolver.update(uri, values, null, null);
    } catch (Exception e)
    {
        // We failed to insert into the database. This can happen if
        // the SD card is unmounted.
        Log.e(TAG, "failed to add video to media store", e);
        uri = null;
    } finally
    {
        Log.v(TAG, "Current video URI: " + uri);
    }
    return uri;
}
 
Example #30
Source File: FFmpegRecorderActivity.java    From FFmpegRecorder with GNU General Public License v3.0 5 votes vote down vote up
/**
 * ��ϵͳע������¼�Ƶ���Ƶ�ļ��������ļ��Ż���sd������ʾ
 */
private void registerVideo()
{
	Uri videoTable = Uri.parse(CONSTANTS.VIDEO_CONTENT_URI);
	
	Util.videoContentValues.put(Video.Media.SIZE, new File(strVideoPath).length());
	try{
		uriVideoPath = getContentResolver().insert(videoTable, Util.videoContentValues);
	} catch (Throwable e){
		uriVideoPath = null;
		strVideoPath = null;
		e.printStackTrace();
	} finally{}
	Util.videoContentValues = null;
}