android - 如何从android中另一个 Activity 的数据库中获取数据

标签 android database media-player

在我的应用程序的第一个 Activity 中,我创建了一个数据库来存储我设备 SD 卡中的歌曲。我想一首一首地播放所有这些歌曲。在另一个 Activity 中,我有一个播放按钮,当单击该按钮时,我想播放存储在我的第一个 Activity 数据库中的歌曲。

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

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

怎么做....请帮助我

最佳答案

一般来说,您需要围绕您的数据库创建 ContentProvider,以便您可以轻松地从不同的 Activity 中访问它。从一个填充,从另一个播放等等。

关于android - 如何从android中另一个 Activity 的数据库中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5869669/

相关文章:

mysql - 在 MySQL 查询中的 SELECT 中使用 SELECT

ios - AV Foundation框架和Media Player框架的区别

java - IJKplayer 在播放某些视频时崩溃

java - NfcAdapter 不可为空,但由@Provides @Singleton @javax.annotation.Nullable android.nfc.NfcAdapter 提供

database - CakePHP 2.0-自定义数据库错误消息

database - 如何使用flyway将数据从一个DB迁移到另一个DB?

android - 将 Viewpager 与 MediaPlayer 一起使用

java - 在 Java 中使用 Kotlin 单例

Listview 顶部的 Android Logo

android - 在 Android 中将多个项目写入 firebase