0

私はアンドロイド開発にまったく慣れていないので、現在メディアプレーヤーを作ろうとしています。私の次の目標は、アイテムを追加したり削除したりでき、onCompleteListener() がトリガーされたときに自動的に削除できるプレイリスト システムを実装することです。現在、contentResolver を使用して SD カードから曲をプルしています。

public void getSongList(){
        ContentResolver musicResolver=getContentResolver();
        Uri musicUri= MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        Cursor musicCursor=musicResolver.query(musicUri,null,null,null,null);

        if(musicCursor!=null && musicCursor.moveToFirst()){
            //get columns
            int titleColumn = musicCursor.getColumnIndex
                    (android.provider.MediaStore.Audio.Media.TITLE);
            int idColumn = musicCursor.getColumnIndex
                    (android.provider.MediaStore.Audio.Media._ID);
            int artistColumn = musicCursor.getColumnIndex
                    (android.provider.MediaStore.Audio.Media.ARTIST);
            //add songs to list
            do {
                long thisId = musicCursor.getLong(idColumn);
                String thisTitle = musicCursor.getString(titleColumn);
                String thisArtist = musicCursor.getString(artistColumn);
                songList.add(new Song(thisId, thisTitle, thisArtist));
            }
            while (musicCursor.moveToNext());
        }
    }

この時点で、listView のアイテムをクリックして、サービスを介して曲の再生を開始できるように設定しました。私の質問は、曲の URI と位置のデータを保存する最良の方法は何かということです。また、onDestroy() の後であっても、アプリの再起動時にアプリケーションがプレイリストの最後の位置を保存できるようにしたいと考えています。そのデータを格納するためにどのような種類のデータ セットを使用するのが最適か、またそれを取得する方法がわかりません。どんな助けでも大歓迎です!

4

1 に答える 1

0

曲データをデバイスに永続化する必要があります。

Android フレームワークには、永続化のためのいくつかのオプションと戦略が用意されています。

  • 共有プリファレンス- 基本データをキーと値のペアとして、永続化されたプライベート ディクショナリに簡単に保存します。
  • ローカル ファイル- 任意のファイルを内部または外部デバイス ストレージに保存します。
  • SQLite データベース- アプリケーション固有のデータベース内のテーブルにデータを永続化します。
  • ORM - 高レベルのクエリ/更新構文を使用して、モデル オブジェクトを記述および保持します。

ユースケース

通常、各ストレージ オプションには、次のようなユース ケースが関連付けられています。

  • 共有設定- アプリの設定、キー、およびセッション情報に使用されます。
  • ローカル ファイル- BLOB データまたはデータ ファイル キャッシュ (つまり、ディスク イメージ キャッシュ) によく使用されます。
  • SQLite データベース- 複雑なローカル データ操作または生の速度のために使用されます
  • ORM - 単純なリレーショナル データをローカルに保存して、SQL ボイラープレートを削減するために使用されます

続きを読む:デバイスへのデータの永続化.


いずれかのオプションを使用できますが、目的に応じて、SQLite データベースまたはORMがより適切なオプションです。

SQLite データベースのSQLiteOpenHelper を使用して、ローカル データベースにアクセスできます。

ORM については、greenDAOを試すことができます。

于 2016-11-26T02:29:33.253 に答える