如何从android中的另一个活动的数据库中获取数据

时间:2011-05-03 12:48:32

标签: android database media-player

在我的应用程序的第一个活动中,我创建了一个数据库,用于存储设备SD卡中的歌曲。我想逐个播放所有这些歌曲。在另一个活动中,当点击按钮时我有一个播放按钮我想播放存储在我第一个活动的数据库中的歌曲。

现在我创建了数据库并存储了歌曲,但我不知道从该数据库中获取歌曲。 以下是我存储歌曲列表的数据库代码

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 个答案:

答案 0 :(得分:2)

一般来说,您需要在数据库周围创建ContentProvider,以便您可以从不同的活动中轻松访问它。从一个填写,从另一个等玩。