Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
ccim_sdk_android
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sheteng
ccim_sdk_android
Commits
24778a77
Commit
24778a77
authored
Aug 30, 2022
by
sheteng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
语音房间
parent
1a98f9aa
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
343 additions
and
16 deletions
+343
-16
.gitignore
.gitignore
+1
-0
.idea/misc.xml
.idea/misc.xml
+3
-0
app/build.gradle
app/build.gradle
+2
-1
app/libs/janus-release.aar
app/libs/janus-release.aar
+0
-0
app/src/main/AndroidManifest.xml
app/src/main/AndroidManifest.xml
+6
-2
app/src/main/java/com/ccwangluo/im/adapter/ChannelMsgAdapter.java
...main/java/com/ccwangluo/im/adapter/ChannelMsgAdapter.java
+1
-1
app/src/main/java/com/ccwangluo/im/adapter/PrivateMsgAdapter.java
...main/java/com/ccwangluo/im/adapter/PrivateMsgAdapter.java
+1
-1
app/src/main/java/com/ccwangluo/im/ui/login/TestActivity.java
...src/main/java/com/ccwangluo/im/ui/login/TestActivity.java
+24
-0
app/src/main/java/com/ccwangluo/im/ui/notifications/NotificationsFragment.java
.../ccwangluo/im/ui/notifications/NotificationsFragment.java
+27
-0
app/src/main/res/layout/activity_login.xml
app/src/main/res/layout/activity_login.xml
+1
-1
app/src/main/res/layout/activity_test.xml
app/src/main/res/layout/activity_test.xml
+9
-0
app/src/main/res/layout/fragment_notifications.xml
app/src/main/res/layout/fragment_notifications.xml
+13
-0
ccim/build.gradle
ccim/build.gradle
+10
-1
ccim/libs/janus-release.aar
ccim/libs/janus-release.aar
+0
-0
ccim/src/main/java/com/ccwangluo/ccim/CCIMClient.java
ccim/src/main/java/com/ccwangluo/ccim/CCIMClient.java
+34
-3
ccim/src/main/java/com/ccwangluo/ccim/audio/JanusService.java
.../src/main/java/com/ccwangluo/ccim/audio/JanusService.java
+191
-0
ccim/src/main/java/com/ccwangluo/ccim/audio/ServiceDelegate.java
...c/main/java/com/ccwangluo/ccim/audio/ServiceDelegate.java
+10
-0
ccim/src/main/java/com/ccwangluo/ccim/manage/MessageManager.java
...c/main/java/com/ccwangluo/ccim/manage/MessageManager.java
+3
-3
ccim/src/main/java/com/ccwangluo/ccim/util/ErrorCode.java
ccim/src/main/java/com/ccwangluo/ccim/util/ErrorCode.java
+2
-0
ccim/src/main/java/com/ccwangluo/ccim/util/MediaHelper.java
ccim/src/main/java/com/ccwangluo/ccim/util/MediaHelper.java
+4
-1
ccim/src/main/proto/chat.proto
ccim/src/main/proto/chat.proto
+1
-2
No files found.
.gitignore
View file @
24778a77
...
...
@@ -13,3 +13,4 @@
.externalNativeBuild
.cxx
local.properties
/.idea/
.idea/misc.xml
View file @
24778a77
...
...
@@ -3,9 +3,12 @@
<component
name=
"DesignSurface"
>
<option
name=
"filePathToZoomLevelMap"
>
<map>
<entry
key=
"..\:/ccwangluo/ccim_sdk_android/app/src/main/res/layout/activity_connect_channel.xml"
value=
"0.3328125"
/>
<entry
key=
"..\:/ccwangluo/ccim_sdk_android/app/src/main/res/layout/activity_login.xml"
value=
"0.1612008072653885"
/>
<entry
key=
"..\:/ccwangluo/ccim_sdk_android/app/src/main/res/layout/activity_main2.xml"
value=
"0.1612008072653885"
/>
<entry
key=
"..\:/ccwangluo/ccim_sdk_android/app/src/main/res/layout/activity_test.xml"
value=
"0.3328125"
/>
<entry
key=
"..\:/ccwangluo/ccim_sdk_android/app/src/main/res/layout/fragment_message.xml"
value=
"0.291213768115942"
/>
<entry
key=
"..\:/ccwangluo/ccim_sdk_android/app/src/main/res/layout/fragment_notifications.xml"
value=
"0.3328125"
/>
<entry
key=
"..\:/ccwangluo/ccim_sdk_android/app/src/main/res/layout/msg_row_item.xml"
value=
"0.2617753623188406"
/>
<entry
key=
"..\:/ccwangluo/ccim_sdk_android/app/src/main/res/layout/text_row_item.xml"
value=
"0.291213768115942"
/>
<entry
key=
"..\:/ccwangluo/ccim_sdk_android/app/src/main/res/menu/bottom_nav_menu.xml"
value=
"0.32864583333333336"
/>
...
...
app/build.gradle
View file @
24778a77
...
...
@@ -8,7 +8,7 @@ android {
defaultConfig
{
applicationId
"com.ccwangluo.xiyuan22"
minSdkVersion
17
minSdkVersion
24
targetSdkVersion
30
versionCode
1
versionName
"1.0"
...
...
@@ -55,6 +55,7 @@ dependencies {
implementation
'org.greenrobot:eventbus:3.1.1'
// implementation(name: 'ccim-release', ext: 'aar')
implementation
(
name:
'janus-release'
,
ext:
'aar'
)
implementation
project
(
path:
':ccim'
)
implementation
'com.google.protobuf:protobuf-java:3.13.0'
implementation
'com.google.protobuf:protobuf-java-util:3.12.0'
...
...
app/libs/janus-release.aar
0 → 100644
View file @
24778a77
File added
app/src/main/AndroidManifest.xml
View file @
24778a77
...
...
@@ -3,6 +3,7 @@
package=
"com.ccwangluo.im"
>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.BLUETOOTH"
/>
<application
android:name=
".App"
...
...
@@ -10,8 +11,11 @@
android:icon=
"@mipmap/ic_launcher"
android:label=
"@string/app_name"
android:roundIcon=
"@mipmap/ic_launcher_round"
android:supportsRtl=
"true"
android:theme=
"@style/Theme.CcwangluoIm"
>
android:supportsRtl=
"true"
>
<activity
android:name=
".ui.login.TestActivity"
android:launchMode=
"singleTop"
android:exported=
"false"
/>
<activity
android:name=
".ui.dashboard.ConnectActivity"
android:exported=
"false"
/>
...
...
app/src/main/java/com/ccwangluo/im/adapter/ChannelMsgAdapter.java
View file @
24778a77
...
...
@@ -97,7 +97,7 @@ public class ChannelMsgAdapter extends BaseAdapter {
public
void
onFailed
(
int
errorCode
)
{
System
.
out
.
println
(
"onFailed"
);
}
});
}
,
1.0f
);
}
}
});
...
...
app/src/main/java/com/ccwangluo/im/adapter/PrivateMsgAdapter.java
View file @
24778a77
...
...
@@ -103,7 +103,7 @@ public class PrivateMsgAdapter extends BaseAdapter {
public
void
onFailed
(
int
errorCode
)
{
System
.
out
.
println
(
"onFailed"
);
}
});
}
,
0.3f
);
// CCIMClient.getInstance().getAudioDuration(message.getMsgId(), new ResultEventCallback<Long>() {
// @Override
// public void onSuccess(Long aLong) {
...
...
app/src/main/java/com/ccwangluo/im/ui/login/TestActivity.java
0 → 100644
View file @
24778a77
package
com.ccwangluo.im.ui.login
;
import
androidx.appcompat.app.AppCompatActivity
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
com.ccwangluo.im.R
;
public
class
TestActivity
extends
AppCompatActivity
{
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_test
);
System
.
out
.
println
(
"TestActivity onCreate"
);
}
@Override
protected
void
onNewIntent
(
Intent
intent
)
{
super
.
onNewIntent
(
intent
);
System
.
out
.
println
(
"TestActivity onNewIntent"
);
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/im/ui/notifications/NotificationsFragment.java
View file @
24778a77
...
...
@@ -7,6 +7,8 @@ import android.content.Context;
import
android.content.DialogInterface
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.os.Looper
;
import
android.text.TextUtils
;
import
android.view.LayoutInflater
;
import
android.view.View
;
...
...
@@ -28,6 +30,7 @@ import com.ccwangluo.im.adapter.ChannelAdapter;
import
com.ccwangluo.im.data.LoginViewModel
;
import
com.ccwangluo.im.databinding.FragmentNotificationsBinding
;
import
com.ccwangluo.im.listener.ChannelClickListener
;
import
com.ccwangluo.im.ui.login.TestActivity
;
import
com.ccwangluo.im.util.ToastUtil
;
import
java.util.ArrayList
;
...
...
@@ -167,6 +170,30 @@ public class NotificationsFragment extends Fragment {
builder
.
show
();
}
});
binding
.
joinRoom
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCIMClient
.
getInstance
().
joinAudioRoom
(
getContext
(),
1234
,
new
ResultEventCallback
<
Void
>()
{
@Override
public
void
onSuccess
(
Void
unused
)
{
ToastUtil
.
show
(
getContext
(),
"加入成功"
);
}
@Override
public
void
onFailed
(
int
errorCode
)
{
ToastUtil
.
show
(
getContext
(),
"加入失败"
);
}
});
}
});
binding
.
exitRoom
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
CCIMClient
.
getInstance
().
exitAudioRoom
();
}
});
return
root
;
}
...
...
app/src/main/res/layout/activity_login.xml
View file @
24778a77
...
...
@@ -69,7 +69,7 @@
android:layout_height=
"wrap_content"
android:layout_marginTop=
"8dp"
android:hint=
"ip"
android:text=
"10
.17.4.20
7"
android:text=
"10
6.15.237.6
7"
android:imeActionLabel=
"@string/action_sign_in_short"
android:imeOptions=
"actionDone"
android:selectAllOnFocus=
"true"
...
...
app/src/main/res/layout/activity_test.xml
0 → 100644
View file @
24778a77
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.login.TestActivity"
>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_notifications.xml
View file @
24778a77
...
...
@@ -24,6 +24,19 @@
android:id=
"@+id/join_channel"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
<Button
android:layout_marginLeft=
"10dp"
android:text=
"加入房间"
android:id=
"@+id/join_room"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
<Button
android:layout_marginLeft=
"10dp"
android:text=
"退出房间"
android:id=
"@+id/exit_room"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
<ListView
...
...
ccim/build.gradle
View file @
24778a77
...
...
@@ -8,7 +8,7 @@ android {
buildToolsVersion
"30.0.3"
defaultConfig
{
minSdkVersion
16
minSdkVersion
24
targetSdkVersion
30
versionCode
3
versionName
"1.0.2"
...
...
@@ -40,6 +40,7 @@ android {
}
}
protobuf
{
//配置protoc编译器
protoc
{
...
...
@@ -57,7 +58,14 @@ protobuf {
}
}
}
repositories
{
flatDir
{
dirs
'libs'
}
}
dependencies
{
compileOnly
(
name:
'janus-release'
,
ext:
'aar'
)
implementation
'androidx.appcompat:appcompat:1.3.1'
implementation
'com.google.protobuf:protobuf-java:3.13.0'
implementation
'com.google.protobuf:protobuf-java-util:3.12.0'
...
...
@@ -68,4 +76,5 @@ dependencies {
implementation
"androidx.room:room-runtime:$room_version"
annotationProcessor
"androidx.room:room-compiler:$room_version"
implementation
'com.karumi:dexter:6.2.3'
implementation
'org.webrtc:google-webrtc:1.0.28513'
}
\ No newline at end of file
ccim/libs/janus-release.aar
0 → 100644
View file @
24778a77
File added
ccim/src/main/java/com/ccwangluo/ccim/CCIMClient.java
View file @
24778a77
package
com.ccwangluo.ccim
;
import
android.Manifest
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.media.MediaPlayer
;
import
android.os.Environment
;
...
...
@@ -10,6 +11,8 @@ import android.text.TextUtils;
import
androidx.annotation.NonNull
;
import
com.ccwangluo.ccim.audio.JanusService
;
import
com.ccwangluo.ccim.audio.ServiceDelegate
;
import
com.ccwangluo.ccim.listener.OnClientConnectListener
;
import
com.ccwangluo.ccim.listener.OnConnectListener
;
import
com.ccwangluo.ccim.listener.OnPlayAudioCallback
;
...
...
@@ -31,6 +34,10 @@ import com.ccwangluo.ccim.modle.User;
import
com.ccwangluo.ccim.util.ErrorCode
;
import
com.ccwangluo.ccim.util.MediaHelper
;
import
com.ccwangluo.ccim.util.PermissionUtils
;
import
com.github.helloiampau.janus.generated.Bundle
;
import
com.github.helloiampau.janus.generated.JanusEvent
;
import
com.github.helloiampau.janus.generated.JanusPlugins
;
import
com.github.helloiampau.janusclientsdk.JanusConfImpl
;
import
com.google.gson.Gson
;
import
com.google.protobuf.util.JsonFormat
;
import
com.karumi.dexter.Dexter
;
...
...
@@ -63,6 +70,7 @@ public class CCIMClient {
private
Long
lastSendTimemillis
=
0L
;
//上次发送消息时间,用于时间间隔
private
int
maxSendMsgInterval
=
0
;
private
int
maxAudioDuration
=
0
;
private
String
audioServer
;
private
final
int
minAudioDuration
=
500
;
public
String
downloadPrefix
;
public
String
cachePath
;
...
...
@@ -75,7 +83,7 @@ public class CCIMClient {
socketManager
=
new
SocketManager
(
callBackManager
,
executor
);
channelManager
=
new
ChannelManager
(
socketManager
,
callBackManager
);
messageManager
=
new
MessageManager
(
socketManager
,
callBackManager
,
executor
);
contactManager
=
new
ContactManager
(
socketManager
,
callBackManager
,
messageManager
,
executor
);
contactManager
=
new
ContactManager
(
socketManager
,
callBackManager
,
messageManager
,
executor
);
}
private
static
CCIMClient
mInstance
;
...
...
@@ -104,6 +112,7 @@ public class CCIMClient {
maxSendMsgInterval
=
clientConfig
.
getSendMsgInterval
();
maxAudioDuration
=
clientConfig
.
getMaxAudioDuration
();
downloadPrefix
=
clientConfig
.
getDownloadPrefix
();
audioServer
=
clientConfig
.
getAudioServer
();
getContactList
(
true
,
new
ResultEventCallback
<
PullContactsRes
>()
{
@Override
public
void
onSuccess
(
PullContactsRes
pullContactsRes
)
{
...
...
@@ -636,9 +645,10 @@ public class CCIMClient {
/**
* 播放音乐
* volume 范围0~1
*/
public
void
startPlayAudio
(
Long
msgId
,
OnPlayAudioCallback
callback
)
{
messageManager
.
playAudio
(
msgId
,
downloadPrefix
,
cachePath
,
callback
);
public
void
startPlayAudio
(
Long
msgId
,
OnPlayAudioCallback
callback
,
Float
volume
)
{
messageManager
.
playAudio
(
msgId
,
downloadPrefix
,
cachePath
,
callback
,
volume
);
}
/**
...
...
@@ -662,6 +672,27 @@ public class CCIMClient {
messageManager
.
updateReadOffset
(
userId
,
msgid
,
callback
);
}
/**
* 加入房间
*/
public
void
joinAudioRoom
(
Context
context
,
int
roomId
,
ResultEventCallback
<
Void
>
callback
)
{
JanusConfImpl
conf
=
new
JanusConfImpl
();
conf
.
url
(
audioServer
);
conf
.
plugin
(
JanusPlugins
.
VIDEOROOM
);
janusService
=
new
JanusService
(
context
,
roomId
,
user
,
callback
);
janusService
.
start
(
context
,
conf
);
}
/**
* 退出房间
*/
public
void
exitAudioRoom
()
{
if
(
janusService
!=
null
)
{
janusService
.
stop
();
}
}
private
JanusService
janusService
;
public
void
logout
()
{
isConnected
=
false
;
...
...
ccim/src/main/java/com/ccwangluo/ccim/audio/JanusService.java
0 → 100644
View file @
24778a77
package
com.ccwangluo.ccim.audio
;
import
android.Manifest
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.util.Log
;
import
androidx.lifecycle.LiveData
;
import
androidx.lifecycle.MutableLiveData
;
import
androidx.room.Room
;
import
com.ccwangluo.ccim.listener.ResultEventCallback
;
import
com.ccwangluo.ccim.modle.User
;
import
com.ccwangluo.ccim.util.ErrorCode
;
import
com.github.helloiampau.janus.generated.Bundle
;
import
com.github.helloiampau.janus.generated.Janus
;
import
com.github.helloiampau.janus.generated.JanusCommands
;
import
com.github.helloiampau.janus.generated.JanusData
;
import
com.github.helloiampau.janus.generated.JanusError
;
import
com.github.helloiampau.janus.generated.JanusEvent
;
import
com.github.helloiampau.janusclientsdk.JanusConfImpl
;
import
com.github.helloiampau.janusclientsdk.JanusDelegate
;
import
com.github.helloiampau.janusclientsdk.JanusFactory
;
import
com.github.helloiampau.janusclientsdk.rtc.AppRTCAudioManager
;
import
com.github.helloiampau.janusclientsdk.rtc.MediaBundle
;
import
com.google.gson.Gson
;
import
com.karumi.dexter.Dexter
;
import
com.karumi.dexter.MultiplePermissionsReport
;
import
com.karumi.dexter.PermissionToken
;
import
com.karumi.dexter.listener.PermissionRequest
;
import
com.karumi.dexter.listener.multi.MultiplePermissionsListener
;
import
org.webrtc.AudioTrack
;
import
org.webrtc.DataChannel
;
import
org.webrtc.EglBase
;
import
org.webrtc.VideoTrack
;
import
java.nio.ByteBuffer
;
import
java.nio.charset.Charset
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
JanusService
extends
JanusDelegate
{
private
Janus
_janus
;
private
EglBase
_rootEgl
;
private
User
user
;
private
Integer
roomId
;
private
Boolean
isJoin
=
false
;
private
AppRTCAudioManager
audioManager
;
private
ResultEventCallback
<
Void
>
callback
;
public
JanusService
(
Context
context
,
Integer
roomId
,
User
user
,
ResultEventCallback
<
Void
>
callback
)
{
audioManager
=
AppRTCAudioManager
.
create
(
context
.
getApplicationContext
());
this
.
user
=
user
;
this
.
roomId
=
roomId
;
this
.
callback
=
callback
;
}
public
void
start
(
Context
context
,
JanusConfImpl
conf
)
{
Dexter
.
withContext
(
context
).
withPermissions
(
Manifest
.
permission
.
RECORD_AUDIO
).
withListener
(
new
MultiplePermissionsListener
()
{
@Override
public
void
onPermissionsChecked
(
MultiplePermissionsReport
report
)
{
JanusFactory
factory
=
new
JanusFactory
();
_janus
=
factory
.
create
(
conf
,
JanusService
.
this
,
context
.
getApplicationContext
());
_rootEgl
=
factory
.
rootEgl
();
_janus
.
init
();
if
(
audioManager
!=
null
)
{
audioManager
.
start
((
selectedAudioDevice
,
availableAudioDevices
)
->
{
}
);
}
}
@Override
public
void
onPermissionRationaleShouldBeShown
(
List
<
PermissionRequest
>
permissions
,
PermissionToken
token
)
{
callback
.
onFailed
(
ErrorCode
.
ERROR_PERMISSION_DENIE
);
}
}).
check
();
}
public
void
stop
()
{
this
.
_janus
.
close
();
}
public
void
hangup
()
{
this
.
_janus
.
hangup
();
}
@Override
public
void
onClose
()
{
if
(
audioManager
!=
null
)
{
audioManager
.
stop
();
}
}
@Override
public
void
onError
(
JanusError
error
,
Bundle
context
)
{
}
@Override
public
void
onReady
()
{
Bundle
payload
=
Bundle
.
create
();
payload
.
setInt
(
"room"
,
roomId
);
payload
.
setString
(
"display"
,
new
Gson
().
toJson
(
user
));
this
.
_janus
.
dispatch
(
JanusCommands
.
JOIN
,
payload
);
}
@Override
public
void
onHangup
(
String
reason
)
{
}
@Override
public
void
onMediaChanged
(
MediaBundle
media
)
{
}
@Override
public
void
onDatachannelMessage
(
DataChannel
.
Buffer
buffer
)
{
}
@Override
public
String
onOffer
(
String
sdp
)
{
return
sdp
;
}
@Override
public
String
onAnswer
(
String
sdp
)
{
return
sdp
;
}
@Override
public
void
onEvent
(
JanusEvent
event
,
Bundle
context
)
{
JanusData
data
=
event
.
data
();
if
(
data
.
getString
(
"janus"
,
""
).
equals
(
"error"
)
&&
context
.
getString
(
"command"
,
""
).
equals
(
JanusCommands
.
JOIN
))
{
System
.
out
.
println
(
"加入失败"
);
if
(
callback
!=
null
)
{
callback
.
onFailed
(
ErrorCode
.
JOIN_AUDIO_FAILED
);
}
return
;
}
if
(
data
.
getString
(
"videoroom"
,
""
).
equals
(
"joined"
))
{
if
(!
isJoin
)
{
isJoin
=
true
;
Bundle
payload
=
Bundle
.
create
();
payload
.
setBool
(
"audio"
,
true
);
payload
.
setBool
(
"video"
,
false
);
payload
.
setBool
(
"data"
,
false
);
this
.
_janus
.
dispatch
(
JanusCommands
.
PUBLISH
,
payload
);
System
.
out
.
println
(
"加入成功"
);
List
<
JanusData
>
publishers
=
data
.
getList
(
"publishers"
);
subscribePublishers
(
publishers
);
if
(
callback
!=
null
)
{
callback
.
onSuccess
(
null
);
}
}
return
;
}
List
<
JanusData
>
publishers
=
data
.
getList
(
"publishers"
);
if
(
publishers
.
size
()
>
0
)
{
subscribePublishers
(
publishers
);
return
;
}
}
private
void
subscribePublishers
(
List
<
JanusData
>
publishers
)
{
if
(
publishers
.
size
()
>
0
)
{
for
(
JanusData
publisher
:
publishers
)
{
Bundle
payload
=
Bundle
.
create
();
payload
.
setInt
(
"room"
,
roomId
);
payload
.
setInt
(
"feed"
,
publisher
.
getInt
(
"id"
,
-
1
));
// payload.setInt("feed", publisher.getString("display", ""));
// Publisher pub = new Publisher(publisher);
// publishersMap.put(pub.handleId, pub);
this
.
_janus
.
dispatch
(
JanusCommands
.
SUBSCRIBE
,
payload
);
}
}
}
}
ccim/src/main/java/com/ccwangluo/ccim/audio/ServiceDelegate.java
0 → 100644
View file @
24778a77
package
com.ccwangluo.ccim.audio
;
import
com.github.helloiampau.janus.generated.Bundle
;
import
com.github.helloiampau.janus.generated.JanusEvent
;
public
interface
ServiceDelegate
{
public
void
onEvent
(
JanusEvent
event
,
Bundle
payload
);
}
ccim/src/main/java/com/ccwangluo/ccim/manage/MessageManager.java
View file @
24778a77
...
...
@@ -251,7 +251,7 @@ public class MessageManager {
}
public
void
playAudio
(
Long
msgId
,
String
downloadPrefix
,
String
cachePath
,
OnPlayAudioCallback
resultCallback
)
{
public
void
playAudio
(
Long
msgId
,
String
downloadPrefix
,
String
cachePath
,
OnPlayAudioCallback
resultCallback
,
Float
volume
)
{
executor
.
execute
(()
->
{
MessageContent
messageContent
=
db
.
messageDao
().
getMsgById
(
msgId
);
if
(
messageContent
==
null
)
{
...
...
@@ -268,7 +268,7 @@ public class MessageManager {
FileUtils
.
downLoadFile
(
url
,
file
,
new
ResultEventCallback
<
File
>()
{
@Override
public
void
onSuccess
(
File
file
)
{
MediaHelper
.
getInstance
().
play
(
file
.
getAbsolutePath
(),
resultCallback
);
MediaHelper
.
getInstance
().
play
(
file
.
getAbsolutePath
(),
resultCallback
,
volume
);
}
@Override
...
...
@@ -277,7 +277,7 @@ public class MessageManager {
}
});
}
else
{
MediaHelper
.
getInstance
().
play
(
file
.
getAbsolutePath
(),
resultCallback
);
MediaHelper
.
getInstance
().
play
(
file
.
getAbsolutePath
(),
resultCallback
,
volume
);
}
});
...
...
ccim/src/main/java/com/ccwangluo/ccim/util/ErrorCode.java
View file @
24778a77
...
...
@@ -15,5 +15,7 @@ public class ErrorCode {
public
static
final
int
MSG_CONTENT_IS_EMPTY
=
910
;
//发送消息体为空
public
static
final
int
START_VOICE_FAILED
=
911
;
//录音创建失败
public
static
final
int
ERROR_PERMISSION_DENIE
=
912
;
//权限拒绝
public
static
final
int
JOIN_AUDIO_FAILED
=
913
;
//加入语音失败
}
ccim/src/main/java/com/ccwangluo/ccim/util/MediaHelper.java
View file @
24778a77
package
com.ccwangluo.ccim.util
;
import
android.media.AudioManager
;
import
android.media.MediaPlayer
;
import
android.media.MediaRecorder
;
import
android.os.Build
;
...
...
@@ -106,7 +107,7 @@ public class MediaHelper {
*
* @param filePath
*/
public
void
play
(
String
filePath
,
OnPlayAudioCallback
resultCallback
)
{
public
void
play
(
String
filePath
,
OnPlayAudioCallback
resultCallback
,
Float
volume
)
{
if
(
mediaPlayer
==
null
)
{
mediaPlayer
=
new
MediaPlayer
();
}
else
{
...
...
@@ -117,6 +118,8 @@ public class MediaHelper {
}
try
{
mediaPlayer
.
setDataSource
(
filePath
);
mediaPlayer
.
setAudioStreamType
(
AudioManager
.
STREAM_MUSIC
);
mediaPlayer
.
setVolume
(
volume
,
volume
);
mediaPlayer
.
prepare
();
mediaPlayer
.
start
();
resultCallback
.
onStart
();
...
...
ccim/src/main/proto/chat.proto
View file @
24778a77
...
...
@@ -2,8 +2,6 @@ syntax = "proto3";
package
ccim
.
protocol
;
option
csharp_namespace
=
"CCIM.Protocol"
;
import
"channel.proto"
;
import
"common.proto"
;
import
"contact.proto"
;
...
...
@@ -118,6 +116,7 @@ message ConnectResponse {
int32
send_msg_interval
=
1
;
int32
max_audio_duration
=
2
;
string
download_prefix
=
3
;
// 下载地址前缀
string
audio_server
=
4
;
// 语音服务器
}
bool
connected
=
1
;
//是否连接成功
int32
heart_beat_interval
=
2
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment