跳转到主内容
极星编程网:以代码为星,赴技术山海!

Android Gallery3d 中多媒体数据库文件在哪里?如何解析?

文章导读

各位编程爱好者,是不是一直在好奇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,获取更多精彩内容。

相关文章