Skip to content

Commit 34ae849

Browse files
authored
Module KTVAPI (#5)
module ktvapi
1 parent 74b32c5 commit 34ae849

File tree

20 files changed

+219
-129
lines changed

20 files changed

+219
-129
lines changed
File renamed without changes.
File renamed without changes.

KTVAPI/Android/app/build.gradle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,14 @@ dependencies {
7070
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1'
7171
implementation 'androidx.navigation:navigation-fragment-ktx:2.4.1'
7272
implementation 'androidx.navigation:navigation-ui-ktx:2.4.1'
73-
implementation 'io.agora.rtc:agora-special-full:4.1.1.142'
74-
implementation 'com.github.AgoraIO-Community:LyricsView:1.1.1-beta.8'
7573
implementation 'com.google.code.gson:gson:2.10.1'
7674
implementation 'com.squareup.okhttp3:okhttp:3.12.0'
7775
implementation 'com.github.mrmike:ok2curl:0.8.0'
76+
77+
// 歌词组件
78+
implementation 'com.github.AgoraIO-Community:LyricsView:1.1.1-beta.8'
79+
// ktvapi
80+
api project(":lib_ktvapi")
7881
}
7982

8083
static def releaseTime() {

KTVAPI/Android/app/src/main/java/io/agora/ktvdemo/RtcEngineController.kt renamed to KTVAPI/Android/app/src/main/java/io/agora/ktvdemo/rtc/RtcEngineController.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
package io.agora.ktvdemo
1+
package io.agora.ktvdemo.rtc
22

33
import android.util.Log
4+
import io.agora.ktvdemo.BuildConfig
5+
import io.agora.ktvdemo.MyApplication
46
import io.agora.rtc2.*
57

68
data class IChannelEventListener constructor(

KTVAPI/Android/app/src/main/java/io/agora/ktvdemo/ui/BaseActivity.kt

Lines changed: 0 additions & 19 deletions
This file was deleted.

KTVAPI/Android/app/src/main/java/io/agora/ktvdemo/ui/LivingFragment.kt

Lines changed: 32 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,27 @@ import android.view.ViewGroup
88
import androidx.navigation.fragment.findNavController
99
import io.agora.karaoke_view.v11.KaraokeView
1010
import io.agora.ktvdemo.BuildConfig
11-
import io.agora.ktvdemo.IChannelEventListener
12-
import io.agora.ktvdemo.RtcEngineController
11+
import io.agora.ktvdemo.rtc.RtcEngineController
1312
import io.agora.ktvdemo.databinding.FragmentLivingBinding
14-
import io.agora.ktvdemo.ktvapi.IKTVApiEventHandler
15-
import io.agora.ktvdemo.ktvapi.ILrcView
16-
import io.agora.ktvdemo.ktvapi.IMusicLoadStateListener
17-
import io.agora.ktvdemo.ktvapi.ISwitchRoleStateListener
18-
import io.agora.ktvdemo.ktvapi.KTVApi
19-
import io.agora.ktvdemo.ktvapi.KTVApiConfig
20-
import io.agora.ktvdemo.ktvapi.KTVLoadMusicConfiguration
21-
import io.agora.ktvdemo.ktvapi.KTVLoadMusicMode
22-
import io.agora.ktvdemo.ktvapi.KTVLoadSongFailReason
23-
import io.agora.ktvdemo.ktvapi.KTVSingRole
24-
import io.agora.ktvdemo.ktvapi.MusicLoadStatus
25-
import io.agora.ktvdemo.ktvapi.SwitchRoleFailReason
26-
import io.agora.ktvdemo.ktvapi.createKTVApi
13+
import io.agora.ktvapi.IKTVApiEventHandler
14+
import io.agora.ktvapi.ILrcView
15+
import io.agora.ktvapi.IMusicLoadStateListener
16+
import io.agora.ktvapi.ISwitchRoleStateListener
17+
import io.agora.ktvapi.KTVApi
18+
import io.agora.ktvapi.KTVApiConfig
19+
import io.agora.ktvapi.KTVLoadMusicConfiguration
20+
import io.agora.ktvapi.KTVLoadMusicMode
21+
import io.agora.ktvapi.KTVLoadSongFailReason
22+
import io.agora.ktvapi.KTVSingRole
23+
import io.agora.ktvapi.MusicLoadStatus
24+
import io.agora.ktvapi.SwitchRoleFailReason
25+
import io.agora.ktvapi.createKTVApi
26+
import io.agora.ktvdemo.R
2727
import io.agora.ktvdemo.utils.DownloadUtils
2828
import io.agora.ktvdemo.utils.KeyCenter
29-
import io.agora.ktvdemo.utils.TokenGenerator
3029
import io.agora.ktvdemo.utils.ZipUtils
3130
import io.agora.mediaplayer.Constants
3231
import io.agora.rtc2.ChannelMediaOptions
33-
import io.agora.rtc2.RtcEngine
3432
import java.io.File
3533

3634
class LivingFragment : BaseFragment<FragmentLivingBinding>() {
@@ -41,6 +39,8 @@ class LivingFragment : BaseFragment<FragmentLivingBinding>() {
4139
createKTVApi()
4240
}
4341

42+
private val ktvApiEventHandler = object : IKTVApiEventHandler() {}
43+
4444
override fun getViewBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentLivingBinding {
4545
return FragmentLivingBinding.inflate(inflater)
4646
}
@@ -53,18 +53,30 @@ class LivingFragment : BaseFragment<FragmentLivingBinding>() {
5353
joinChannel()
5454
}
5555

56+
override fun onDestroy() {
57+
ktvApi.switchSingerRole(KTVSingRole.Audience, null)
58+
ktvApi.removeEventHandler(ktvApiEventHandler)
59+
ktvApi.release()
60+
RtcEngineController.rtcEngine.leaveChannel()
61+
super.onDestroy()
62+
}
63+
5664
private fun initView() {
5765
binding?.apply {
5866
karaokeView = KaraokeView(lyricsView,null)
5967
btnClose.setOnClickListener {
68+
ktvApi.switchSingerRole(KTVSingRole.Audience, null)
69+
ktvApi.removeEventHandler(ktvApiEventHandler)
70+
ktvApi.release()
71+
RtcEngineController.rtcEngine.leaveChannel()
6072
findNavController().popBackStack()
6173
}
6274
if (KeyCenter.isLeadSinger()) {
63-
tvSinger.text = "主唱"
75+
tvSinger.text = getString(R.string.app_lead_singer)
6476
} else if (KeyCenter.isCoSinger()) {
65-
tvSinger.text = "伴唱"
77+
tvSinger.text = getString(R.string.app_co_singer)
6678
} else {
67-
tvSinger.text = "观众"
79+
tvSinger.text = getString(R.string.app_audience)
6880
}
6981
}
7082
}
@@ -249,31 +261,4 @@ class LivingFragment : BaseFragment<FragmentLivingBinding>() {
249261
}
250262
})
251263
}
252-
253-
private val ktvApiEventHandler = object : IKTVApiEventHandler() {
254-
override fun onMusicPlayerStateChanged(
255-
state: Constants.MediaPlayerState,
256-
error: Constants.MediaPlayerError,
257-
isLocal: Boolean
258-
) {
259-
super.onMusicPlayerStateChanged(state, error, isLocal)
260-
}
261-
262-
override fun onSingerRoleChanged(oldRole: KTVSingRole, newRole: KTVSingRole) {
263-
super.onSingerRoleChanged(oldRole, newRole)
264-
}
265-
266-
override fun onTokenPrivilegeWillExpire() {
267-
super.onTokenPrivilegeWillExpire()
268-
269-
}
270-
}
271-
272-
override fun onDestroy() {
273-
ktvApi.switchSingerRole(KTVSingRole.Audience, null)
274-
ktvApi.removeEventHandler(ktvApiEventHandler)
275-
ktvApi.release()
276-
RtcEngine.destroy()
277-
super.onDestroy()
278-
}
279264
}

KTVAPI/Android/app/src/main/java/io/agora/ktvdemo/ui/MainActivity.kt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import android.Manifest
44
import android.content.pm.PackageManager
55
import android.os.Bundle
66
import android.util.Log
7-
import android.view.LayoutInflater
7+
import androidx.appcompat.app.AppCompatActivity
88
import androidx.core.app.ActivityCompat
99
import io.agora.ktvdemo.databinding.ActivityMainBinding
1010

11-
class MainActivity : BaseActivity<ActivityMainBinding>() {
11+
class MainActivity : AppCompatActivity() {
1212

1313
companion object{
1414
const val TAG = "MainActivity"
@@ -19,13 +19,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
1919

2020
}
2121

22-
23-
override fun getViewBinding(inflater: LayoutInflater): ActivityMainBinding {
24-
return ActivityMainBinding.inflate(inflater)
25-
}
22+
private lateinit var binding: ActivityMainBinding
2623

2724
override fun onCreate(savedInstanceState: Bundle?) {
2825
super.onCreate(savedInstanceState)
26+
binding = ActivityMainBinding.inflate(layoutInflater)
27+
setContentView(binding.root)
2928
ActivityCompat.requestPermissions(this, PERMISSIONS, 100)
3029
}
3130

@@ -38,9 +37,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
3837
if (!granted) break
3938
}
4039
if (granted) {
41-
Log.d(TAG,"获取到权限...")
40+
Log.d(TAG,"get premission...")
4241
} else {
43-
Log.d(TAG,"未获取到权限...")
42+
Log.d(TAG,"no premission...")
4443
}
4544
}
4645
}

KTVAPI/Android/app/src/main/java/io/agora/ktvdemo/ui/MainFragment.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,15 @@ import android.os.Bundle
44
import android.view.LayoutInflater
55
import android.view.View
66
import android.view.ViewGroup
7-
import android.widget.Toast
87
import androidx.core.content.res.ResourcesCompat
98
import androidx.core.widget.doAfterTextChanged
109
import androidx.navigation.fragment.findNavController
11-
import io.agora.ktvdemo.IChannelEventListener
10+
import io.agora.ktvdemo.rtc.IChannelEventListener
1211
import io.agora.ktvdemo.R
13-
import io.agora.ktvdemo.RtcEngineController
12+
import io.agora.ktvdemo.rtc.RtcEngineController
1413
import io.agora.ktvdemo.databinding.FragmentMainBinding
1514
import io.agora.ktvdemo.utils.KeyCenter
1615
import io.agora.ktvdemo.utils.TokenGenerator
17-
import io.agora.rtc2.ChannelMediaOptions
1816

1917
class MainFragment : BaseFragment<FragmentMainBinding>() {
2018

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
<string name="app_name">KtvApiDemo</string>
4+
<string name="app_lead_singer">主唱</string>
5+
<string name="app_co_singer">合唱</string>
6+
<string name="app_audience">观众</string>
7+
</resources>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
<resources>
22
<string name="app_name">KtvApiDemo</string>
3+
<string name="app_lead_singer">leadSinger</string>
4+
<string name="app_co_singer">coSinger</string>
5+
<string name="app_audience">audience</string>
36
</resources>

0 commit comments

Comments
 (0)