Java 如何使用Kotlin的路径播放Mp3文件?

Java 如何使用Kotlin的路径播放Mp3文件?,java,android-studio,kotlin,uri,android-music-player,Java,Android Studio,Kotlin,Uri,Android Music Player,我启动了一个制作音乐播放器的项目。最初我使用ApI级别29列出了所有mp3文件。但我在创建mediaplayer时遇到了问题。每次显示的错误都是“找到一个空Uri”…我尝试了这个。。。 有趣的GetApperExternalFilesDir():文件?{ 如果(Build.VERSION.SDK_INT>=29){ getExternalFilesDir(空) }else{/@在API 29中已弃用。 ///storage/emulated/0 Environment.getExternalSt

我启动了一个制作音乐播放器的项目。最初我使用ApI级别29列出了所有mp3文件。但我在创建mediaplayer时遇到了问题。每次显示的错误都是“找到一个空Uri”…我尝试了这个。。。 有趣的GetApperExternalFilesDir():文件?{ 如果(Build.VERSION.SDK_INT>=29){ getExternalFilesDir(空) }else{/@在API 29中已弃用。 ///storage/emulated/0 Environment.getExternalStorageDirectory() } }

funlistdir(f:File){
变量文件:数组?=f.listFiles()
list.clear()
如果(文件!=null){
用于(文件:文件中的文件){
if(file.name.endsWith(“.mp3”)){
添加(模型(文件名))
}
}
}
listview.setOnItemClickListener{parent:AdapterView,view:view,position:Int,id:Long->
如果(位置>=0){
var textcopy:TextView=view.findViewById(R.id.foldername)
var namecomped:String=textcopy.text.toString()
mediaplayer=mediaplayer()
var uri:uri=uri.parse((getAppExternalFilesDir().toString()+“/”+NameCopy))
Toast.makeText(this,uri.toString(),Toast.LENGTH\u SHORT.show())
mediaplayer=mediaplayer.create(这个,uri)
mediaplayer.prepare()
mediaplayer.start()
}
//其中getAppExternalFilesDir()=getExternalFilesDir(null)
}

您的代码也没有经过优化,您可以使用冷序列搜索文件,它会在运行时销毁文件的旧实例

funlistdir(f:File){
val mp3Files=f.walk().map{it.absolutePath}.filter{it.endsWith(“.mp3”)}.toList()
listview.setOnItemClickListener{parent:AdapterView,view:view,position:Int,id:Long->
如果(位置>=0){
...
var uri:uri=uri.fromFile(文件(mp3Files[position]))
...
}
}
}

这将创建适当的Uri,您可以将其传递给媒体播放器以播放mp3文件。

显示两个错误,一个是(File(mp3Files[position])未考虑位置,另一个是{it.name.endsWith(“.mp3”)}名称中显示错误。因为您没有使用arraylist或其他东西获取MP3文件。我无法识别MP3文件val@DikShU检查更新的答案,这样就可以了,我检查了这个。我将MP3文件更新为字符串的ArrayList,但它的.name仍然显示错误。name.is不Recngnized是否将MP3文件作为数组list、 尝试但显示错误
fun ListDir(f: File) {
    var files: Array<File>? = f.listFiles()
    list.clear()
    if (files != null) {
        for (file: File in files) {
            if (file.name.endsWith(".mp3")){
                list.add(Model(file.name))
            }


        }
    }
    listview.setOnItemClickListener { parent:AdapterView<*>, view:View, position:Int, id:Long ->
        if (position>=0) {
            var textcopy: TextView = view.findViewById(R.id.foldername)
            var namecopied: String = textcopy.text.toString()
            mediaplayer = MediaPlayer()
            var uri: Uri = Uri.parse((getAppExternalFilesDir().toString() + "/" + namecopied))
            Toast.makeText(this, uri.toString(), Toast.LENGTH_SHORT).show()
            mediaplayer = MediaPlayer.create(this, uri)
            mediaplayer.prepare()
            mediaplayer.start()
        }
          //where  getAppExternalFilesDir() =getExternalFilesDir(null)






    }