2016-11-25 12 views
0

私はアンドロイド開発にはかなり新しいです。私は現在、メディアプレーヤーを作りようとしています。私の次の目標は、アイテムが追加され、削除されるプレイリストシステムを実装することです。また、onCompleteListener()がトリガーされたときにアイテムを自動削除することもできます。私は現在、私はそれが私がListViewコントロール内の項目をクリックすることができ、それがサービスを経由して、曲の再生を開始できることをこのように設定している。この時点で、ContentResolverのMP3ファイル用のダイナミックプレイリストAndroid

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()); 
     } 
    } 

を使用してSDカードから曲を引っ張っています。私の質問は、歌URIと位置のデータを保存する最良の方法は何ですか。また、onDestroy()の後であっても、アプリケーションが再起動したときに最後の位置にプレイリストを保存できるようにすることもできます。私は、どのような種類のデータセットがそのデータを保存するのに最もよく使われるのか、それをどのように取得するのかはわかりません。どんな助けでも大歓迎です!

答えて

0

のデバイスに曲データを保存する必要があります。

Androidのフレームワークは、永続性のために、いくつかのオプションと戦略提供:

  • 共有設定 - 簡単にプライベート持続辞書内のキーと値のペアとしての基本的なデータを保存します。
  • ローカルファイル - 任意のファイルを内部または外部のデバイスストレージに保存します。
  • SQLiteデータベース - アプリケーション固有のデータベース内のテーブル内のデータを保持します。
  • ORM - 上位レベルのクエリ/更新構文を使用してモデルオブジェクトを記述して保持します。

ユースケース

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

  • 共有設定 - アプリの好み、キー、およびセッション情報に使用されます。
  • ローカルファイル - 多くの場合、BLOBデータやデータファイルのキャッシュに使用する(つまり、ディスクイメージキャッシュ)
  • SQLiteデータベース -
  • 複雑なローカルデータ操作のためか、生のスピードのために使用されるORM - するために使用簡単なリレーショナルデータをローカルに格納してSQLの定型文を減らす

続きを読む:Persisting Data To Device


あなたは、オプションのいずれかを使用することができますが、あなたの目的のために、SQLiteのデータベースまたはORMは、より良い選択肢です。

SQLiteデータベースのLocal Databases with SQLiteOpenHelperにアクセスできます。

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

+0

私はプレイリストにSQLiteを使用する予定ですが、私はフォーマットについて疑問に思っています。私は、注文番号を割り当てて、注文を追跡すると思ったが、歌が完成したら、他のエントリーのすべてを更新しなければならず、これはかさばるだろう。私が考えることのできる代替案は、永遠にそれらを増やすことですが、やはり最終的にはかさばります。それについてどうやって行きますか? –

+0

これを解決するために、私はトラックのために別のテーブルを作るのが好きです。そのため、ソングのデータとトラックで表を作成するのではなく、songIdとtrackNumberの列のみの表を作成します。外部キーとしてのSongId列は、ソングデータテーブルのソングを指します。 –

関連する問題