Android studio Kotlin:MusicLayer小部件

Android studio Kotlin:MusicLayer小部件,android-studio,kotlin,android-widget,Android Studio,Kotlin,Android Widget,我正在尝试构建一个非常简单的音乐播放器(只播放一首歌曲),以便学习创建Android小部件 以下是我的主要活动,使用媒体播放器播放我的歌曲: class MainActivity : AppCompatActivity() { var music: MediaPlayer? = null override fun onCreate( savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)

我正在尝试构建一个非常简单的音乐播放器(只播放一首歌曲),以便学习创建Android小部件

以下是我的主要活动,使用媒体播放器播放我的歌曲:

class MainActivity : AppCompatActivity() {
var music: MediaPlayer? = null
override fun onCreate(
        savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    music = MediaPlayer.create(
            this, R.raw.song)
}

// Playing the music
fun musicplay(v: View?) {
    music!!.start()
}

// Pausing the music
fun musicpause(v: View?) {
    music!!.pause()
}

// Stopping the music
fun musicstop(v: View?) {
    music!!.stop()
    music = MediaPlayer.create(
            this, R.raw.song)
}
}

该应用程序本身工作正常,但我无法让我的小部件(由三个按钮组成,播放、暂停和停止)工作

我将其拆分为AppWidgetProvider:

class MusicManager : AppWidgetProvider() {
private val ACTION_WIDGET_PLAY = "PlaySong"
private val ACTION_WIDGET_PAUSE = "PauseSong"
private val ACTION_WIDGET_STOP = "StopSong"
private val INTENT_FLAGS = 0
private val REQUEST_CODE = 0
override fun onUpdate(
    context: Context, appWidgetManager: AppWidgetManager,
    appWidgetIds: IntArray
) {
    val controlButtons = RemoteViews(
        context.packageName,
        R.layout.myawesomewidget
    )
    val playIntent = Intent(context, MainActivity::class.java)
    val pauseIntent = Intent(context, MainActivity::class.java)
    val stopIntent = Intent(context, MainActivity::class.java)
    val playPendingIntent = PendingIntent.getService(
        context, REQUEST_CODE, playIntent, INTENT_FLAGS
    )
    val pausePendingIntent = PendingIntent.getService(
        context, REQUEST_CODE, pauseIntent, INTENT_FLAGS
    )
    val stopPendingIntent = PendingIntent.getService(
        context, REQUEST_CODE, stopIntent, INTENT_FLAGS
    )
    controlButtons.setOnClickPendingIntent(
        R.id.btnPlay, playPendingIntent
    )
    controlButtons.setOnClickPendingIntent(
        R.id.btnPause, pausePendingIntent
    )
    controlButtons.setOnClickPendingIntent(
        R.id.btnStop, stopPendingIntent
    )
    appWidgetManager.updateAppWidget(appWidgetIds, controlButtons)
}
}

和一项服务:

class MyService : Service() {

private val TAG: String? = null
var player: MediaPlayer? = null
override fun onBind(intent: Intent): IBinder? {
    return null
}

override fun onCreate() {
    super.onCreate()
    player = MediaPlayer.create(this,R.raw.song)
}

override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
    player?.start()
    return 1
}

override fun onStart(intent: Intent?, startId: Int) {
    // TO DO
}

fun onUnBind(intent: Intent): IBinder? {
    // TO DO Auto-generated method
    return null
}

fun onStop() {}
fun onPause() {}
override fun onDestroy() {
    player!!.stop()
    player!!.release()
}
}

我可以将小部件添加到我的主屏幕上,但当我按下按钮时,什么也没有发生。我想问题可能来自onStartCommand函数,但可能还有更多问题我无法确定

我可能看起来不明白我在做什么,这是真的。我通常通过尝试来学习,直到成功,但在花了整整一周的时间试图理解这个问题之后,我已经走到了死胡同

感谢所有想看看这个的人