Как использовать реактивные мозги, открытые с содержанием Android Resolver / Mediastore - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь создать простое приложение для Android, которое можно контролировать на расстоянии. В данный момент я пытаюсь решить проблему отправки всей информации о исполнителях / альбомах / песнях, которые находятся на телефоне. На данный момент я получаю всю информацию как таковую:

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 голосов
/ 07 января 2019

Exposed для JDBC. ContentResolver не использует JDBC, а Cursor не является объектом из JDBC. В целом, Android не использует JDBC, в приложениях или на уровне ОС.

...