文章导读
各位编程爱好者,是不是一直在好奇Android的Gallery3d中多媒体数据库文件都存放在哪里?今天就来给大家揭秘这个问题,顺便聊聊如何解析这些数据库文件。读完这篇文章,你将对Gallery3d的数据库有更深入的了解。
Android多媒体数据库文件存放位置
Android的多媒体数据库文件主要存储在/data/data/com.android.providers.media/databases目录下。这里有两个数据库文件:internal.db和external-.db,分别对应内部存储器和外部存储器的数据库文件。
数据库文件分析
root手机后,可以使用adb命令将数据库文件拉出来,然后使用数据库工具打开文件,查看其中的表格。主要表格包括:
- albums:相册信息
- album_art:相册封面图片
- artiest:艺术家信息
- image:图片信息
- video:视频信息
- thumbnails:图片缩略图信息
- videothumbnails:视频缩略图信息
这些表格详细记录了音频、视频、图片的相关信息,甚至还包括了图片和视频的缩略图。
缩略图存储
需要注意的是,图片本身很大,即使是缩略图也不会小。所以,扫描时不会将缩略图全部放入数据库中,而是将它们保存在T卡/DCIM/.thumbnails/目录中,数据库中只保存一个指向这些缩略图的路径。
无T卡的情况
如果没有T卡,Gallery3d在运行时会提示“无可用外部存储器”,然后退出。这也说明了没有T卡,Gallery3d的缩略图是无法显示的。
OpenGL和Activity分析
在准备学习Gallery3d的主要Activity之前,最好先学习一下OpenGL,因为Gallery3d的Activity中会用到OpenGL。接下来,我们将学习GalleryActivity的相关内容。
代码分析
public final class Gallery extends Activity{
private RenderView mRenderView = null;
private GridLayer mGridLayer;
@Override
public void onCreate(Bundle savedInstanceState){
mRenderView = new RenderView(this);
mGridLayer = new GridLayer(this, (int) (96.0f * App.PIXEL_DENSITY),
(int) (72.0f * App.PIXEL_DENSITY), new GridLayoutInterface(4),
mRenderView);
mRenderView.setRootLayer(mGridLayer);
setContentView(mRenderView);
}
}
从代码中可以看出,GalleryActivity中添加了一个继承于GLSurfaceView的视图mRenderView,并且将mGridLayer设置成了根层。
触摸和按键事件处理
public final class RenderView extends GLSurfaceView implements GLSurfaceView.Renderer, SensorEventListener {
}
RenderView类继承自GLSurfaceView,并实现了GLSurfaceView.Renderer和SensorEventListener接口。这里涉及到触摸和按键事件的处理,具体内容我们下次再讲解。
小结与拓展
今天我们介绍了Android Gallery3d中多媒体数据库文件的存放位置和解析方法,并对GalleryActivity的代码进行了简单的分析。如果你对OpenGL和Activity有更深入的了解,可以尝试自己分析一下触摸和按键事件的处理逻辑。
我是极星编程网的苏承栈,如果你对Android编程还有其他疑问,欢迎关注我们的网站www.jxgpc.com,获取更多精彩内容。
