Android图片浏览器

来源:互联网 发布:mysql数据库编程 编辑:程序博客网 时间:2024/04/18 09:24

当手机开机、插拔USB连接时,Android系统会启动MediaScanner,扫描SD卡和内存里面的文件,扫描的结果保存在data/data/com.android.providers.media/databases/external.db下。通过DDMS可以找到,数据库中包含了图片、视频、音乐等文件的信息。开发者不用遍历文件,只要使用ContentProvider就可以获取SD卡中不同种类的文件列表。

数据库external.db:
sqlite3 external.db
.tables
所有的表:
album_art              audio_genres           images               
album_info             audio_genres_map       log                  
albums                 audio_genres_map_noid  search               
android_metadata       audio_meta             searchhelpertitle    
artist_info            audio_playlists        semc_metadata        
artists                audio_playlists_map    semc_metadata_version
artists_albums_map     files                  thumbnails           
audio                  files_ext              video                
audio_ext              files_with_ext         videothumbnails

选择images并查询;

.mode column         (.mode column 将设置为列显示模式,.header 将显示列名)

.header ON
select * from images;

结果如下:
_id|_data|_size|_display_name|mime_type|title|date_added|date_modified|description|picasa_id|isprivate|latitude|longitude|datetaken|orientation|mini_thumb_magic|bucket_id|bucket_display_name|width|height
86|/mnt/sdcard/DCIM/100ANDRO/DSC_0001.jpg|607597|DSC_0001.jpg|image/jpeg|DSC_0001|1371782044|1361346484||||||1361346484000|90|7241443144086764191|1278012876|100ANDRO|2048|1536

示例代码:

列表界面:

public class PlayerActivity extends Activity {    private ListView listView;    private CursorAdapter adapter;    private Cursor cursor;    private String path;    @SuppressWarnings("deprecation")    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        listView = (ListView)findViewById(R.id.listView);        ContentResolver contentResolver = getContentResolver();        cursor = contentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,                null, null, null, null);        adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor,                new String[] {                        MediaStore.Images.ImageColumns.TITLE, MediaStore.Images.ImageColumns.SIZE                }, new int[] {                        android.R.id.text1, android.R.id.text2                });        listView.setAdapter(adapter);        listView.setOnItemClickListener(new OnItemClickListener() {            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                // TODO Auto-generated method stub                try {                    if (cursor.moveToPosition(position)) {                        path = cursor.getString(cursor.getColumnIndex("_data"));                    }                } catch (Exception e) {                    // TODO: handle exception                    e.printStackTrace();                }                Intent intent = new Intent(PlayerActivity.this, ShowActivity.class);                intent.putExtra("path", path);                startActivity(intent);            }        });    }    @Override    protected void onDestroy() {        // TODO Auto-generated method stub        super.onDestroy();        cursor.close();    }}
显示界面:
public class ShowActivity extends Activity {    private ImageView imageView;    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        this.requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.show);        imageView = (ImageView)findViewById(R.id.show);        Intent intent = getIntent();        String path = intent.getStringExtra("path");        BitmapDrawable drawable = new BitmapDrawable(getResources(), path);        imageView.setImageDrawable(drawable);    }}

MediaStore:基于SQLite的多媒体数据库,包含了视频、音频、图片等所有的多媒体文件的信息。
MediaStore.Audio:音频信息
MediaStore.Files:非媒体信息
MediaStore.Images:图片信息
MediaStore.Video:视频信息
MediaStore.MediaColumns:部分MediaProvider表的常用列



原创粉丝点击