Android图片浏览器

当手机开机、插拔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表的常用列



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值