我如何使用暴露于android contentResolver / Mediastore的Jetbrains

时间:2019-01-06 23:20:33

标签: android kotlin orm android-contentresolver kotlin-exposed

我正在尝试制作一个可以从远处控制的简单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 Exposed,

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

,我很茫然,我不知道如何连接到该数据库。我似乎找不到任何有关如何从此开始的示例。

1 个答案:

答案 0 :(得分:1)

公开用于JDBC。 ContentResolver未使用JDBC,并且Cursor不是JDBC中的对象。通常,Android在应用程序或操作系统级别不使用JDBC。