代码之家  ›  专栏  ›  技术社区  ›  Typhaon

如何使用Android ContentResolver/MediaStore中的JetBrains

  •  0
  • Typhaon  · 技术社区  · 6 年前

    我正在尝试做一个简单的Android MediaPlayer应用程序,可以从远处控制。目前,我正试图解决这个问题,即发送所有关于艺术家/专辑/歌曲的电话信息。目前我正在检索所有信息,例如:

    private val contentResolver = activity.contentResolver!!
    
    fun getAll():Set<Album>{
        val res = mutableSetOf<Album>()
        val cursor = contentResolver.query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
                arrayOf(
                        MediaStore.Audio.Albums.ALBUM,
                        MediaStore.Audio.Albums.ALBUM_ART,
                        MediaStore.Audio.Albums.NUMBER_OF_SONGS,
                        MediaStore.Audio.Albums.ARTIST)
                ,null,null)
        if(cursor!!.moveToFirst())
            do {
                res.add(Album().apply {
                    name = cursor.getString(0)
                    if (!cursor.getString(1).isNullOrEmpty())
                        albumArtUri = Uri.parse(cursor.getString(1))
                    songCount = cursor.getInt(2)
                    artist = Artist().apply {
                        name = cursor.getString(3)
                    }
                })
                cursor.moveToNext()
            }while (!cursor.isAfterLast)
        cursor.close()
        return res
    }
    

    看到我使用的是一个光标,我以为我使用的是一种数据库(sqlite等),正如你所看到的,这是一组信息很少的对象的大量代码;创建的专辑对象中没有歌曲。为此,您需要启动一个新的查询、启动和一个新的URI。现在我想我可以用ORM了。所以我可以用歌曲列表等填充专辑对象。我决定试试JetBrains暴露的,打字:

     val database = Database.connect(....)
    

    我也不知所措,我不知道如何连接到这个数据库。我似乎找不到任何关于如何从这个开始的例子。

    1 回复  |  直到 6 年前
        1
  •  1
  •   CommonsWare    6 年前

    曝光是为了JDBC。 ContentResolver 不使用JDBC,并且 Cursor 不是JDBC中的对象。一般来说,Android不在应用程序或操作系统级别使用JDBC。

    推荐文章