2014-03-24 30 views
0


正如您所看到的,我在这里是新手(但对编程并不陌生)。我正在开发我的第一款Android相机应用程序,并且无法将我的视频文件显示在画廊中。我知道我需要通知系统我的新文件的内容值,但没有任何我尝试的工作。将视频添加到Android内容管理器

奇怪的是这只是正常的图像:

ContentValues values = new ContentValues(); 
values.put(MediaStore.Images.Media.DATA, imgFile.getAbsolutePath()); 
getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 


然而,这确实总是在画廊的应用程序可见视频:

ContentValues values = new ContentValues(); 
values.put(MediaStore.Video.Media.DATA, vidFile.getAbsolutePath()); 
getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values); 

我向你保证这是一个有效的视频文件,有时上面的代码有效。尽管如此,我无法找到什么时候工作,何时不工作的模式。
我也尝试了一些其他的变体getContentResolver()。insert。事实上,如果我告诉它我的视频文件是一个图像,它总是更新与我的视频不可查看的图像库。
非常感谢您的帮助!

回答

0

那么这是一个考验,但我找到了解决办法。其实这个新的解决方案可能会比我想要做的更好。取决于我想的各种方法的开销。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageAddedOrDeleted))); 

这使我的视频看到我的画廊应用程序每次(感谢上帝,我要诉诸:

正如帕斯卡尔here说,我可以通过广播适当的意图更新内容提供商写我自己的内置查看器) 但我仍然很好奇,为什么我的方法适用于图像而不是视频,以防有人知道。