
Schneevoli
Neues Mitglied
- 0
Hallo,
ich entwickle eine Art verbesserten Musik-Player für Wear OS und hänge nun länger an einem Problem fest. Ich möchte (als ersten Schritt), dass der User aus den lokal gespeicherten Audio-Dateien auf der Uhr eine auswählen und abspielen kann.
Ich benutze Android Studio Koala 2024.1.1 und Android SDK 34 und programmiere in Kotlin.
Hier ist meine Funktion zum Finden der Audiodateien:
Ich habe außerdem diese Permissions im Manifest:
Wenn ich die App builde und auf meine Smartwatch lade (Galaxy Watch 4 mit WearOS 5.0) und in den Einstellungen die Zugriffe erlaube, findet der Code nur eine Reihe von Systemsounds (sowas wie Alarm-Sounds, Klingeltöne usw), aber NICHT meine selber draufgeladenen mp3-Dateien. Ich lade sie immer über die Wearable-App von meinem Handy drauf, und soweit ich das verstehe, sind sie dann lokal auf der Uhr. Denn ich kann sie auch ohne Internetverbindung und ohne Verbindung zum Handy abspielen.
Ich habe ausprobiert "INTERNAL_CONTENT_URI" zu "EXTERNAL_CONTENT_URI" zu ändern, aber das ändert nichts. Außerdem habe ich in Android Studio in dem simulierten Dateiverzeichnis eine mp3 unter storage und eine unter sd-card gelegt, aber beide werden nicht von diesem Code gefunden, weder mit Internal noch mit External.
Kann mir jemand weiterhelfen? Ich wäre sehr dankbar.
ich entwickle eine Art verbesserten Musik-Player für Wear OS und hänge nun länger an einem Problem fest. Ich möchte (als ersten Schritt), dass der User aus den lokal gespeicherten Audio-Dateien auf der Uhr eine auswählen und abspielen kann.
Ich benutze Android Studio Koala 2024.1.1 und Android SDK 34 und programmiere in Kotlin.
Hier ist meine Funktion zum Finden der Audiodateien:
Code:
fun findSongs(): SortedMap<String, String> {
val selection = StringBuilder("is_music != 0 AND title != ''")
val songs = HashMap<String, String>()
// Display audios in alphabetical order based on their display name.
val sortOrder = "${MediaStore.Audio.Media.DISPLAY_NAME} ASC"
val cursor: Cursor? = contentResolver.query(
INTERNAL_CONTENT_URI,
null,
null,
null,
null
)
if (cursor != null && cursor.moveToFirst()) {
do {
val id = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID))
val title: String =
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME))
val duration: Int =
cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION))
val size = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE))
val artist =
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST))
val uri = ContentUris.withAppendedId(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID)))
val path = getPath(this, uri)
//if (title.endsWith(".mp3")) {
songs[title] = path.toString()
//}
} while (cursor.moveToNext())
}
val songsSorted = songs.toSortedMap()
cursor?.close()
return songsSorted
}
Ich habe außerdem diese Permissions im Manifest:
XML:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION" />
Wenn ich die App builde und auf meine Smartwatch lade (Galaxy Watch 4 mit WearOS 5.0) und in den Einstellungen die Zugriffe erlaube, findet der Code nur eine Reihe von Systemsounds (sowas wie Alarm-Sounds, Klingeltöne usw), aber NICHT meine selber draufgeladenen mp3-Dateien. Ich lade sie immer über die Wearable-App von meinem Handy drauf, und soweit ich das verstehe, sind sie dann lokal auf der Uhr. Denn ich kann sie auch ohne Internetverbindung und ohne Verbindung zum Handy abspielen.
Ich habe ausprobiert "INTERNAL_CONTENT_URI" zu "EXTERNAL_CONTENT_URI" zu ändern, aber das ändert nichts. Außerdem habe ich in Android Studio in dem simulierten Dateiverzeichnis eine mp3 unter storage und eine unter sd-card gelegt, aber beide werden nicht von diesem Code gefunden, weder mit Internal noch mit External.
Kann mir jemand weiterhelfen? Ich wäre sehr dankbar.