我正在尝试使用 kivy 开发一个 android 媒体播放器,我目前正坚持在 android 设备上获取所有音频文件数据并在回收视图中填充数据。我做了一些研究,发现我可以在 java MediaStore 类的帮助下实现这一点,但我不知道该怎么做。
我曾尝试查看 pyjnius 文档,但它对于初学者来说并不十分详细,因此任何关于我如何实现这一点的说明的帮助将不胜感激。
我正在尝试使用 kivy 开发一个 android 媒体播放器,我目前正坚持在 android 设备上获取所有音频文件数据并在回收视图中填充数据。我做了一些研究,发现我可以在 java MediaStore 类的帮助下实现这一点,但我不知道该怎么做。
我曾尝试查看 pyjnius 文档,但它对于初学者来说并不十分详细,因此任何关于我如何实现这一点的说明的帮助将不胜感激。
适用于我,在 Android <= 9 上
from jnius import autoclass
def get_songs(self):
PythonActivity = autoclass('org.kivy.android.PythonActivity')
Cursor = autoclass('android.database.Cursor')
Uri = autoclass('android.net.Uri')
contentResolver = PythonActivity.mActivity
uri = Uri.parse("content://media/external/audio/media/")
# uri = Uri.parse("content://media/internal/audio/media/")
cursor = contentResolver.getContentResolver().query(uri, None, None, None, None)
if cursor is not None and cursor.moveToFirst():
while cursor.moveToNext():
title = cursor.getString(cursor.getColumnIndex('MediaStore.Audio.Media.TITLE')) # retrieve songs title
# path = cursor.getString(cursor.getColumnIndex('MediaStore.Audio.Media._data')) # retrieve songs path
print(title)
cursor.close()
没用过MediaStore
,但这是我用来pyjnius
安装apk
文件的方式:
from jnius import cast
from jnius import autoclass
# the download is the app, install it using an Android Intent
PythonActivity = autoclass('org.kivy.android.PythonActivity') #request the Kivy activity instance
Intent = autoclass('android.content.Intent') # get the Android Intent class
Uri = autoclass('android.net.Uri')
File = autoclass('java.io.File')
intent = Intent() # create a new Android Intent
intent.setDataAndType(Uri.fromFile(File(str(self.localUpdateFile))), "application/vnd.android.package-archive")
intent.setAction(Intent.ACTION_VIEW) #set the action (use ACTION_VIEW for install)
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
currentActivity = cast('android.app.Activity', PythonActivity.mActivity)
currentActivity.startActivity(intent) # show the intent in the activity
我希望开始MediaStore
会是相似的,但不确定您将如何从中获取信息。