From 5b8227d6da8248d11004ec202e5b807924b56b4b Mon Sep 17 00:00:00 2001 From: amazing-username Date: Tue, 26 Mar 2019 21:47:53 -0400 Subject: [PATCH] Fixed issue with functionality breaking when starting a SongViewActivity --- .../example/mear/activities/MainActivity.kt | 16 ++++ .../mear/activities/SongViewActivity.kt | 24 +++++- .../example/mear/adapters/RecyclerAdapter.kt | 85 ++++++++++++------- .../mear/playback/service/MusicService.kt | 10 ++- 4 files changed, 101 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/example/mear/activities/MainActivity.kt b/app/src/main/java/com/example/mear/activities/MainActivity.kt index 5df32ff..5327378 100644 --- a/app/src/main/java/com/example/mear/activities/MainActivity.kt +++ b/app/src/main/java/com/example/mear/activities/MainActivity.kt @@ -56,6 +56,20 @@ class MainActivity : BaseServiceActivity() { } } + override fun onResume() { + super.onResume() + + try { + if (musicService!! != null) { + val tr = musicService!!.getCurrentTrack().title + val artist = musicService!!.getCurrentTrack().artist + } + } + catch (ex: Exception) { + val exMsg = ex.message + } + } + override fun onDestroy() { super.onDestroy() try { @@ -308,6 +322,8 @@ class MainActivity : BaseServiceActivity() { CurrentPosition.text = dur + val tTitle = musicService!!.getCurrentTrack().title + if (!(TrackTitle.text.equals(musicService!!.getCurrentTrack().title))) { configureTrackDisplay() } diff --git a/app/src/main/java/com/example/mear/activities/SongViewActivity.kt b/app/src/main/java/com/example/mear/activities/SongViewActivity.kt index a9c7181..0e73608 100644 --- a/app/src/main/java/com/example/mear/activities/SongViewActivity.kt +++ b/app/src/main/java/com/example/mear/activities/SongViewActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.support.annotation.RequiresApi import android.support.v7.app.AppCompatActivity import android.support.v7.widget.LinearLayoutManager +import android.view.View import java.lang.Exception import kotlinx.android.synthetic.main.activity_song_view.* @@ -16,8 +17,17 @@ import com.example.mear.models.TrackItems import com.example.mear.R import com.example.mear.repositories.TrackRepository import com.example.mear.util.ExtractCover +import org.jetbrains.anko.act class SongViewActivity : BaseServiceActivity() { + + /** + override fun onItemClick(position: Int) { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + val sds = "ddddd" + } + */ + private var trackListItems = arrayListOf() private lateinit var adapter: RecyclerAdapter private lateinit var linearLayoutManager: LinearLayoutManager @@ -58,9 +68,16 @@ class SongViewActivity : BaseServiceActivity() { trackListItems = retrieveTrackItems() - adapter = RecyclerAdapter(trackListItems, this) + + + //adapter = RecyclerAdapter(trackListItems) + //adapter = RecyclerAdapter(this, trackListItems) + adapter = RecyclerAdapter({trackItem: TrackItems -> playTrack(trackItem)}, trackListItems) adapter.configureActivity(this) trackList.adapter = adapter + trackList.setOnClickListener { + val temp = "dddd" + } trackList.setHasFixedSize(true) trackList.setItemViewCacheSize(20); //trackList.setDrawingCacheEnabled(true); @@ -132,4 +149,9 @@ class SongViewActivity : BaseServiceActivity() { return trackItems!! } + + fun playTrack(trackItems: TrackItems) { + val id = trackItems.id + musicService!!.playTrack(id) + } } diff --git a/app/src/main/java/com/example/mear/adapters/RecyclerAdapter.kt b/app/src/main/java/com/example/mear/adapters/RecyclerAdapter.kt index feb5f66..c8db0ed 100644 --- a/app/src/main/java/com/example/mear/adapters/RecyclerAdapter.kt +++ b/app/src/main/java/com/example/mear/adapters/RecyclerAdapter.kt @@ -24,10 +24,21 @@ import com.example.mear.models.TrackItems import com.example.mear.R import com.example.mear.playback.service.MusicService import com.example.mear.repositories.TrackRepository +//import android.R -class RecyclerAdapter( private val trackItemsSourceInit: ArrayList, private var act: Activity) : - RecyclerView.Adapter(), - Application.ActivityLifecycleCallbacks { + + +//class RecyclerAdapter(private val mOnClickListenerI: trackItemClickListener, private val trackItemsSourceInit: ArrayList) : +//class RecyclerAdapter(private val mOnClickListenerI: trackItemClickListener, private val trackItemsSourceInit: ArrayList) : +class RecyclerAdapter(val mOnClickListenerI: (TrackItems) -> Unit , private val trackItemsSourceInit: ArrayList) : + RecyclerView.Adapter() + //Application.ActivityLifecycleCallbacks { +{ + + //private val mOnClickListenerI: trackItemClickListener? = null + private val mOnClick = mOnClickListenerI + + /** override fun onActivityPaused(activity: Activity?) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } @@ -56,32 +67,48 @@ class RecyclerAdapter( private val trackItemsSourceInit: ArrayList, TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } - var activityInst: Activity? = act - var musicService: MusicService? = null + */ + + init { + } + + //var activityInst: Activity? = act + //var musicService: MusicService? = null + + open interface trackItemClickListener{ + fun onClick(view: View) + } override fun getItemCount(): Int { return trackItemsSourceInit!!.size } - override fun onBindViewHolder(holder: TrackItemsHolder, position: Int) { + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { val itemPhoto = trackItemsSourceInit!![position] - holder.bindTrackItems(itemPhoto) + //(holder as TrackItemsHolder).bindTrackItems(itemPhoto) + (holder as TrackItemsHolder).bindTrackItems(itemPhoto, mOnClickListenerI) } - override fun onCreateViewHolder(parent: ViewGroup, position: Int): TrackItemsHolder { +// override fun onCreateViewHolder(parent: ViewGroup, position: Int): TrackItemsHolder { + override fun onCreateViewHolder(parent: ViewGroup, position: Int): RecyclerView.ViewHolder { val inflatedView = parent.inflate(R.layout.fragment_song_view, false) - return TrackItemsHolder(inflatedView, activityInst) + //inflatedView.setOnClickListener(parent.parent) + return TrackItemsHolder(inflatedView) + //return TrackItemsHolder(inflatedView, mOnClick) } fun configureActivity(actvity: Activity) { - activityInst = actvity - activityInst!!.application.registerActivityLifecycleCallbacks(this) + //activityInst = actvity + //activityInst!!.application.registerActivityLifecycleCallbacks(this) } - class TrackItemsHolder(v: View, activity: Activity?) : RecyclerView.ViewHolder(v), View.OnClickListener { + class TrackItemsHolder(v: View) : RecyclerView.ViewHolder(v) { + + + private var view: View = v - private var act = activity - private var musicService: MusicService? = null + //private var act = activity + //private var musicService: MusicService? = null private var trackItem: TrackItems? = null private val imgWidth = 90 private val imgHeight = 90 @@ -89,10 +116,14 @@ class RecyclerAdapter( private val trackItemsSourceInit: ArrayList, init { - v.setOnClickListener(this) + //v.setOnClickListener(this) } + //constructor(vi: View) : super(this) + //constructor(vi: View) : super(this) + + /** private val connection = object : ServiceConnection { override fun onServiceConnected(className: ComponentName, service: IBinder) { @@ -106,34 +137,23 @@ class RecyclerAdapter( private val trackItemsSourceInit: ArrayList, mBound = false } } + */ + /** override fun onClick(v: View) { try { - val context = itemView.context - val showPhotoIntent = Intent(context, SongViewActivity::class.java) + //val context = itemView.context + //val showPhotoIntent = Intent(context, SongViewActivity::class.java) //showPhotoIntent.putExtra(PHOTO_KEY, trackItem) - val id = trackItem!!.id - //context.startActivity(showPhotoIntent) - - if (!mBound) { - val intent = Intent(act, MusicService::class.java) - act!!.bindService(intent, connection, Context.BIND_AUTO_CREATE) - /** - Intent(this, MusicService::class.java).also { intent -> - act!!.applicationContext(intent, connection, Context.BIND_AUTO_CREATE) - act.applicationContext - } - */ - - } } catch (ex: Exception) { val exMsg = ex.message } } + */ - fun bindTrackItems(trackItems: TrackItems) { + fun bindTrackItems(trackItems: TrackItems, clickList: (TrackItems) -> Unit) { try { var context = view.context this.trackItem = trackItems @@ -144,6 +164,7 @@ class RecyclerAdapter( private val trackItemsSourceInit: ArrayList, var trackCoverPath = "${context.filesDir}/${Filenames.TRACK_COVERS}" trackCoverPath = "${trackCoverPath}${id}.bmp" Picasso.get().load(trackCoverPath).into(view.trackCover) + view.setOnClickListener { clickList(trackItem!!) } } catch (ex:Exception) { val exMsg = ex.message diff --git a/app/src/main/java/com/example/mear/playback/service/MusicService.kt b/app/src/main/java/com/example/mear/playback/service/MusicService.kt index e90f496..ffa698a 100644 --- a/app/src/main/java/com/example/mear/playback/service/MusicService.kt +++ b/app/src/main/java/com/example/mear/playback/service/MusicService.kt @@ -66,7 +66,10 @@ class MusicService: Service() { } fun playTrack(id: Int) { - + trackPlayer!!.reset() + trackPlayer!!.setDataSource(TrackRepository(this).getTrack(id).songPath) + trackPlayer!!.prepare() + trackPlayer!!.start() } fun goToPosition(progress: Int) { @@ -175,6 +178,11 @@ class MusicService: Service() { var track: Track? = null track = TrackRepository(this).getTrack(currentSongIndex!!) + val info = trackPlayer!!.trackInfo + + if (trackPlayer!!.isPlaying) { + val res = "songs are being played" + } return track!! }