2011-05-03 54 views
0

中的另一個活動的數據庫中獲取數據我創建了一個數據庫,用於存儲設備SD卡中的歌曲。我想要一一播放所有這些歌曲。在另一項活動中,當按鈕被點擊時,我有一個播放按鈕,我想播放存儲在我的第一個活動數據庫中的歌曲。如何從我的應用程序中的第一個活動中的Android

現在我已經創建了數據庫並存儲了歌曲,但我不知道從該數據庫獲取歌曲。 以下是數據庫的代碼,我存儲的歌曲列表

private Handler songsDatabase = new Handler() 
    { 
     public void handleMessage(Message msg) 
     { 
       File extStore = Environment.getExternalStorageDirectory(); 
       Log.e("location",""+extStore); 
       System.gc(); 
       final String[] proj = { MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.DISPLAY_NAME,MediaStore.Audio.Media.SIZE }; 
       Log.e("media",""+proj.length); 

       musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, null, null, null); 
       Log.e("media1",""+musiccursor); 

       SQLiteDatabase db; 
       db = openOrCreateDatabase("TestData.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); 
       db.setVersion(1); 
       db.setLocale(Locale.getDefault()); 
       db.setLockingEnabled(true); 
       final String CREATE_TABLE_COUNTRIES ="CREATE TABLE IF NOT EXISTS songs (bpm INTEGER,songname TEXT);"; 
       db.execSQL(CREATE_TABLE_COUNTRIES); 
       Log.e("media","table created"); 
       ContentValues values = new ContentValues(); 
       cursor=managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, null, null, null); 

       while(cursor.moveToNext()) 
       { 

//     Long duration = cursor.getLong(cursor.getColumnIndex(AudioColumns.DURATION)); 
//     String data = cursor.getString(cursor.getColumnIndex(MediaColumns.DATA)); 
        String title = cursor.getString(cursor.getColumnIndex(MediaColumns.DISPLAY_NAME)); 

        values.put("bpm", 0); 
        values.put("songname", title); 
        db.insert("songs", null, values); 
        // handle song here 
       } 

        Log.e("media","insered"); 
        Cursor cx = db.rawQuery("select * from songs" , null); 
        if (cx != null) 
        { 
         if (cx.moveToFirst()) 
         { 
          do 
          { 
           int bpm=cx.getInt(0); 
           String songname =cx.getString(1); 
           Log.e("songs","bpm "+bpm+" songname "+songname); 
          }while (cx.moveToNext()); 
         } 
        } 
//    Log.e("sql","counter" +counter); 

       db.close();   
     } 
    }; 

如何做到這一點....請幫我

+1

粘貼您用於保存數據的代碼...它將使我們很容易告訴您如何再次檢索數據。 – Cristian 2011-05-03 12:59:09

+1

此行後面Cursor cx = db.rawQuery(「select * from songs」,null); 通過cx.getCount()檢查Cursor的計數。 – Venky 2011-05-03 13:49:08

回答

1

一般來說,你需要在你的數據庫中創建的ContentProvider,所以你可以輕鬆地從不同的活動訪問它。從一個填充並從另一個播放等。

相關問題