-
Notifications
You must be signed in to change notification settings - Fork 1
Develop
T Yoshizawa edited this page Aug 8, 2021
·
12 revisions
jitpackを用いてlibpeercastをインポートしてください。
PeerCastControllerでサービスに接続することができます。
//アプリのメイン・アクティビティ
class YourMainActivity : Activity(), PeerCastController.EventListener {
private lateinit var pecaController: PeerCastController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
pecaController = PeerCastController.from(this)
//開始・終了時に呼ばれるイベントリスナーを登録。
pecaController.eventListener = this
//もし、インストールされていれば、
if (pecaController.isInstalled) {
//PeerCastを開始します。
pecaController.bindService()
}
}
override fun onDestroy() {
//アプリ終了なのでアンバインドする。
if (pecaController.isConnected)
pecaController.unbindService()
super.onDestroy()
}
override fun onConnectService(controller: PeerCastController) {
//bindServiceに成功した場合に呼ばれます。
Log.i(TAG, "PeerCastが開始されました。")
}
/**通知を受信したとき*/
override fun onNotifyMessage(types: EnumSet<NotifyMessageType>, message: String){
}
/**チャンネルの開始などの通知を受信したとき*/
override fun onNotifyChannel(type: NotifyChannelType, channelId: String, channelInfo: ChannelInfo){
}
override fun onDisconnectService() {
//アンバインドした後、またはサービスがKillされた場合に呼ばれます。
Log.i(TAG, "PeerCastが停止しました。")
}
}
private var rpcClient : PeerCastRpcClient? = null
override fun onConnectService(controller: PeerCastController) {
//bindServiceに成功した場合に呼ばれます。
Log.i(TAG, "PeerCastが開始されました。")
rpcClient = PeerCastRpcClient(controller)
GlobalScope.launch {
try {
rpcClient?.getChannels()
// .getSettings()
// .bumpChannel()
// ...
} catch (e: JsonRpcException){
//エラー
}
}
}
override fun onDisconnectService(controller: PeerCastController) {
//アンバインドした後、またはサービスがKillされた場合に呼ばれます。
Log.i(TAG, "PeerCastが停止しました。")
rpcClient = null
}
vlcやMX等、ffmpeg系動画プレーヤーで視聴するにはリンクをmms://ではなく、
mmsh://localhost:7144/stream/1234..DF.wmv?tip=xxx:7144
としてMMS(HTTP)で開くのが良いです。
mms://だとプレーヤー側からピアキャスが対応してないMMS(TCP)で接続してくる為、再生できないことが多いです。
AndroidManifest.xmlにネット接続の権限を追加します。
<uses-permission android:name="android.permission.INTERNET" />
PeerCastController.ktをはじめとするJavaのコード部分については、
GPL・MITのデュアルライセンスです。
(例えば、上のコードを利用したYPアプリは非GPLでの公開も可能)