Android studio Kotlin:MusicLayer小部件
我正在尝试构建一个非常简单的音乐播放器(只播放一首歌曲),以便学习创建Android小部件 以下是我的主要活动,使用媒体播放器播放我的歌曲: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)
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函数,但可能还有更多问题我无法确定
我可能看起来不明白我在做什么,这是真的。我通常通过尝试来学习,直到成功,但在花了整整一周的时间试图理解这个问题之后,我已经走到了死胡同
感谢所有想看看这个的人