忍者ブログ

Androidアプリ開発のあれこれ

Androidアプリ開発のUIやオーディオ関連の開発メモです。 調べたことを書いてきます。

Home > > [PR] Home > サウンド関連 > ContentResolverを使用してオーディオファイルの情報を取得する

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ContentResolverを使用してオーディオファイルの情報を取得する

端末に保存されているオーディオデータをContentResolverを使用して取得し、リストビューに表示する方法です。


MainActivity.java
public class MainActivity extends ActionBarActivity implements AdapterView.OnItemClickListener {

    private List<Map<String, String>> mSongDataList = new ArrayList<Map<String, String>>();
    private Handler mHandler;
    private SongViewThread mSongViewThread;
    private ListView mSongListView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mHandler = new Handler();
        mSongDataList.clear();

        mSongListView = (ListView) findViewById(R.id.listView);
        mSongListView.setOnItemClickListener(this);

        mSongViewThread = new SongViewThread();
        mSongViewThread.start();
    }
@Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Map<String, String> temp = mSongDataList.get(i); Log.d(TAG, temp.get("title")); Log.d(TAG, temp.get("data")); Log.d(TAG, temp.get("duration")); }

// オーディオ情報を取得し、リストビューに表示させるスレッド private class SongViewThread extends Thread { ContentResolver mContentResolver; Cursor mCursor;
    //取得したい情報をここに String[] columns = new String[]{MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DURATION}; String tempSong, tempSongPath, tempDuration; public void run() { mContentResolver = getContentResolver(); mCursor = mContentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns, null, null, null); while (mCursor.moveToNext()) { tempSong = mCursor.getString(mCursor.getColumnIndex(MediaStore.Audio.Media.TITLE)); tempSongPath = mCursor.getString(mCursor.getColumnIndex(MediaStore.Audio.Media.DATA)); tempDuration = mCursor.getString(mCursor.getColumnIndex(MediaStore.Audio.Media.DURATION)); Map<String, String> tempMap = new HashMap<String, String>(); tempMap.put("title", tempSong); tempMap.put("data", tempSongPath); tempMap.put("duration", tempDuration); mSongDataList.add(tempMap); } mHandler.post(new Runnable() { // run()の中の処理はメインスレッドで動作 public void run() { SimpleAdapter adapter; adapter = new SimpleAdapter(getApplicationContext(), mSongDataList, R.layout.custom_listview, new String[]{"title"}, new int[]{ R.id.song_name}) { }; mSongListView.setAdapter(adapter); } }); } } }

activity_main.xml


    



custom_listview.xml





    



これを実行するとこのように表示されます。


項目をクリックすれば、ログに曲の保存先などの情報が出力されます。

次回に取得する情報にフィルタかけたり、ソートする方法を紹介します。

拍手[1回]

PR

これを実行するとこのように表示されます。


項目をクリックすれば、ログに曲の保存先などの情報が出力されます。

次回に取得する情報にフィルタかけたり、ソートする方法を紹介します。

拍手[1回]

PR
" dc:identifier="http://simplecode.blog.shinobi.jp/%E3%82%B5%E3%82%A6%E3%83%B3%E3%83%89%E9%96%A2%E9%80%A3/contentresolver%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%E3%83%87" /> -->
Responses0 Responses
  • お名前
  • タイトル
  • メールアドレス
  • URL
  • パスワード

プロフィール

HN:
シンプル
性別:
非公開

P R

フリーエリア