Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨凯
YDL-Component-Medical
Commits
83eda2bd
Commit
83eda2bd
authored
Aug 18, 2022
by
万齐军
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
消息直接拉起通话
parent
69b5a398
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
192 additions
and
30 deletions
+192
-30
IAudioImService.kt
api/audioim/src/main/java/com/ydl/audioim/api/IAudioImService.kt
+3
-0
build.gradle
app/build.gradle
+1
-1
MainActivity.kt
app/src/main/java/com/ydl/component/MainActivity.kt
+3
-2
CallCheckBean.kt
m-audioim/src/main/java/com/ydl/audioim/bean/CallCheckBean.kt
+15
-0
AudioNetAPi.kt
m-audioim/src/main/java/com/ydl/audioim/http/AudioNetAPi.kt
+6
-1
AudioImServiceImp.kt
m-audioim/src/main/java/com/ydl/audioim/modular/AudioImServiceImp.kt
+5
-0
CallCheck.kt
m-audioim/src/main/java/com/ydl/audioim/utils/CallCheck.kt
+48
-0
ConsultantAudioHomeActivity.kt
m-audioim/src/main/java/com/ydl/consultantim/ConsultantAudioHomeActivity.kt
+15
-1
build.gradle
m-im/build.gradle
+1
-0
MsgViewHolderConsultCallStatus.java
m-im/src/main/java/com/yidianling/im/session/viewholder/MsgViewHolderConsultCallStatus.java
+24
-4
bg_btn1.xml
m-im/src/main/res/drawable/bg_btn1.xml
+9
-0
im_ui_message_custom_consult_call_status.xml
m-im/src/main/res/layout/im_ui_message_custom_consult_call_status.xml
+62
-21
No files found.
api/audioim/src/main/java/com/ydl/audioim/api/IAudioImService.kt
View file @
83eda2bd
...
...
@@ -45,4 +45,6 @@ interface IAudioImService : IProvider{
fun
initAgoraRtc
(
context
:
Context
)
fun
reportCallEvent
(
type
:
String
,
name
:
String
,
desc
:
String
,
retCode
:
Int
?)
fun
callCheck
(
context
:
Context
,
calleeUid
:
String
?
=
null
,
delay
:
Long
=
0
)
}
\ No newline at end of file
app/build.gradle
View file @
83eda2bd
...
...
@@ -37,7 +37,7 @@ android {
multiDexEnabled
true
ndk
{
abiFilters
"arm64-v8a"
,
"armeabi-v7a"
// 指定要ndk需要兼容的架构(这样其他依赖包里mips,x86,armeabi,arm-v8之类的so会被过滤掉)
abiFilters
"arm64-v8a"
/*,"armeabi-v7a"*/
// 指定要ndk需要兼容的架构(这样其他依赖包里mips,x86,armeabi,arm-v8之类的so会被过滤掉)
}
}
...
...
app/src/main/java/com/ydl/component/MainActivity.kt
View file @
83eda2bd
...
...
@@ -27,7 +27,7 @@ import com.ydl.component.mvp.DemoContract
import
com.ydl.component.mvp.DemoPresenter
import
com.ydl.component.route.PlatformTempCommonRouteImpl
import
com.ydl.component.rtc.MDTLoginActivity
import
com.ydl.confide.
home.ConfideHomeActivity
import
com.ydl.confide.
api.ConfideRoute
import
com.ydl.ydlcommon.data.http.ThrowableConsumer
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.mvp.lce.BaseLceActivity
...
...
@@ -179,7 +179,8 @@ class MainActivity : BaseLceActivity<DemoContract.View, DemoContract.Presenter>(
YDLavManager
.
instances
.
login
(
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
)
startActivity
(
Intent
(
this
,
ConfideHomeActivity
::
class
.
java
))
ARouter
.
getInstance
().
build
(
Uri
.
parse
(
ConfideRoute
.
R_CONFIDE_HOME
+
"?confidedId=299"
)).
navigation
()
// startActivity(Intent(this, ConfideHomeActivity::class.java))
}
ModularServiceManager
.
provide
(
IConsultantService
::
class
.
java
).
requestGuideData
()
...
...
m-audioim/src/main/java/com/ydl/audioim/bean/CallCheckBean.kt
0 → 100644
View file @
83eda2bd
package
com.ydl.audioim.bean
data class
CallCheckBean
(
var
callLongTime
:
Int
=
0
,
var
callTotalTime
:
Int
=
0
,
var
remainingTime
:
Int
=
0
,
var
channelId
:
String
?
=
null
,
var
headImage
:
String
?
=
null
,
var
relationId
:
String
?
=
null
,
var
session
:
String
?
=
null
,
var
userId
:
String
?
=
null
,
var
userName
:
String
?
=
null
)
\ No newline at end of file
m-audioim/src/main/java/com/ydl/audioim/http/AudioNetAPi.kt
View file @
83eda2bd
package
com.ydl.audioim.http
import
com.ydl.audioim.bean.AgoraTokenResponse
import
com.ydl.audioim.bean.CallCheckBean
import
com.ydl.audioim.bean.ConnectBean
import
com.ydl.consultantim.bean.ListenTokenBean
import
com.ydl.ydlcommon.base.config.YDL_DOMAIN
...
...
@@ -19,6 +20,9 @@ import retrofit2.http.*
* @date 2018/11/9
*/
interface
AudioNetAPi
{
@GET
(
"counselor/consultationCall/queryCallInfo"
)
fun
checkCall
(
@Query
(
"calleeUid"
)
calleeUid
:
String
?):
Observable
<
BaseAPIResponse
<
CallCheckBean
>>
/**
* 通话开始回调
*/
...
...
@@ -33,8 +37,9 @@ interface AudioNetAPi {
// @POST("auth/listen-order/callback/agora/finish")
// fun connectFinish(@Body body:RequestBody): Observable<BaseAPIResponse<Any>>
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
,
"Content-Type:application/json"
)
@POST
(
"counselor/device/upload"
)
fun
report
(
@Body
params
:
Map
<
String
,
Any
>):
Observable
<
BaseAPIResponse
<
String
>>
fun
report
(
@Body
params
:
Map
<
String
,
@JvmSuppressWildcards
Any
>):
Observable
<
BaseAPIResponse
<
String
>>
/**
* 通话警告与错误回调
...
...
m-audioim/src/main/java/com/ydl/audioim/modular/AudioImServiceImp.kt
View file @
83eda2bd
...
...
@@ -12,6 +12,7 @@ import com.ydl.audioim.api.IAudioImService
import
com.ydl.audioim.http.AudioApiRequestUtil
import
com.ydl.audioim.http.AudioNetAPi
import
com.ydl.audioim.http.REPORT_LEVEL_INFO
import
com.ydl.audioim.utils.CallCheck
import
com.ydl.audioim.widget.AxbConfirmDialog
import
com.ydl.devicesidlib.DeviceIDHelper
import
com.ydl.ydl_av.voice.listener.RtcGlobalNet
...
...
@@ -87,6 +88,10 @@ class AudioImServiceImp : IAudioImService {
AudioApiRequestUtil
.
callEventSave
(
YDLVoiceManager
.
currentChannel
,
"7"
,
"20"
,
toJson
,
eventType
=
type
)
}
override
fun
callCheck
(
context
:
Context
,
calleeUid
:
String
?,
delay
:
Long
)
{
CallCheck
.
checkCall
(
context
,
calleeUid
,
delay
)
}
override
fun
init
(
context
:
Context
?)
{
}
...
...
m-audioim/src/main/java/com/ydl/audioim/utils/CallCheck.kt
0 → 100644
View file @
83eda2bd
package
com.ydl.audioim.utils
import
android.content.Context
import
android.content.Intent
import
com.apm.insight.log.VLog
import
com.google.gson.Gson
import
com.ydl.audioim.http.AudioNetAPi
import
com.ydl.consultantim.ConsultantAudioHomeActivity
import
com.ydl.ydl_av.chat.bean.AudioMessageBean
import
com.ydl.ydlnet.YDLHttpUtils
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.disposables.Disposable
import
io.reactivex.schedulers.Schedulers
import
java.util.concurrent.TimeUnit
object
CallCheck
{
private
var
subscribe
:
Disposable
?
=
null
const
val
KEY_LATEST_REJECT_CHANNEL
=
"KeyLatestChannel"
fun
checkCall
(
context
:
Context
,
calleeUid
:
String
?
=
null
,
delay
:
Long
=
0
)
{
subscribe
?.
dispose
()
subscribe
=
Observable
.
just
(
1
)
.
delay
(
delay
,
TimeUnit
.
SECONDS
)
.
flatMap
{
YDLHttpUtils
.
obtainApi
(
AudioNetAPi
::
class
.
java
).
checkCall
(
calleeUid
)
}
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
resp
->
if
(
resp
.
code
==
"200"
&&
resp
.
data
!=
null
)
{
val
intent
=
Intent
(
context
,
ConsultantAudioHomeActivity
::
class
.
java
)
val
r
=
resp
.
data
val
bean
=
AudioMessageBean
(
0
,
r
.
channelId
,
r
.
userId
,
r
.
headImage
,
r
.
userName
,
r
.
remainingTime
,
r
.
callTotalTime
,
r
.
relationId
,
null
,
null
,
null
)
val
beanJson
=
Gson
().
toJson
(
bean
)
intent
.
putExtra
(
"param"
,
beanJson
)
context
.
startActivity
(
intent
)
VLog
.
i
(
"CallCheck"
,
"call check go AudioHomeActivity"
)
}
},
{
android
.
util
.
Log
.
e
(
"callCheck"
,
it
.
message
)
})
}
}
\ No newline at end of file
m-audioim/src/main/java/com/ydl/consultantim/ConsultantAudioHomeActivity.kt
View file @
83eda2bd
...
...
@@ -24,6 +24,7 @@ import com.alibaba.android.arouter.facade.annotation.Route
import
com.alibaba.android.arouter.launcher.ARouter
import
com.google.gson.Gson
import
com.tbruyelle.rxpermissions2.RxPermissions
import
com.tencent.mmkv.MMKV
import
com.ydl.audioim.R
import
com.ydl.audioim.YDLavManager
import
com.ydl.audioim.http.AudioApiRequestUtil
...
...
@@ -33,6 +34,7 @@ import com.ydl.audioim.http.command.ConnectExceptionCommand
import
com.ydl.audioim.http.command.PayLoad
import
com.ydl.audioim.player.AudioPlayer
import
com.ydl.audioim.utils.AudioLogUtils
import
com.ydl.audioim.utils.CallCheck
import
com.ydl.audioim.utils.DateUtils
import
com.ydl.consultantim.contract.IConsultantAudioHomeActivityContract
import
com.ydl.consultantim.event.AudioHomeEvent
...
...
@@ -548,6 +550,11 @@ class ConsultantAudioHomeActivity :
writeAgoraLog
(
"收到邀请通话消息内容:$json"
)
mAudioMessageBean
=
Gson
().
fromJson
(
json
,
AudioMessageBean
::
class
.
java
)
val
rejectChannel
=
MMKV
.
defaultMMKV
().
getString
(
CallCheck
.
KEY_LATEST_REJECT_CHANNEL
,
""
)
if
(
rejectChannel
==
mAudioMessageBean
?.
channelId
){
finish
()
}
if
(
YDLavManager
.
sdkStatus
!=
Constants
.
CONNECTION_STATE_CONNECTED
)
{
callEventSave
(
"90"
,
"RMT状态:${YDLavManager.sdkStatus},重新登录RMT"
)
...
...
@@ -731,10 +738,14 @@ class ConsultantAudioHomeActivity :
AliYunRichLogsHelper
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
AGORA
,
"咨询用户端:joinChannel:$account channelId:${mAudioMessageBean?.channelId}"
)
voiceManage
?.
getVoiceApi
()
?.
joinChannel
(
AudioApiRequestUtil
.
reportCallEvent
(
mAudioMessageBean
?.
channelId
,
RtcEvent
(
RtcEvent
.
Event
.
join
))
val
joinCode
=
voiceManage
?.
getVoiceApi
()
?.
joinChannel
(
channelToken
?:
""
,
mAudioMessageBean
!!
.
channelId
!!
,
"Extra Optional Data"
,
account
)
if
(
joinCode
!=
null
&&
joinCode
<
0
)
{
AudioApiRequestUtil
.
reportCallEvent
(
mAudioMessageBean
?.
channelId
,
RtcEvent
(
RtcEvent
.
Event
.
joinFail
),
retCode
=
joinCode
)
}
}
}
...
...
@@ -808,6 +819,9 @@ class ConsultantAudioHomeActivity :
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
(),
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
()
)
if
(!
mAudioMessageBean
?.
channelId
.
isNullOrEmpty
())
{
MMKV
.
defaultMMKV
().
putString
(
CallCheck
.
KEY_LATEST_REJECT_CHANNEL
,
mAudioMessageBean
?.
channelId
)
}
}
/**
...
...
m-im/build.gradle
View file @
83eda2bd
...
...
@@ -69,6 +69,7 @@ dependencies {
api
project
(
':ydl-webview'
)
api
project
(
':ydl-platform'
)
implementation
project
(
":api:im"
)
implementation
project
(
":api:audioim"
)
implementation
project
(
":api:user"
)
implementation
project
(
":api:dynamic"
)
implementation
project
(
":api:tests"
)
...
...
m-im/src/main/java/com/yidianling/im/session/viewholder/MsgViewHolderConsultCallStatus.java
View file @
83eda2bd
...
...
@@ -4,6 +4,8 @@ import android.view.View;
import
android.widget.ImageView
;
import
android.widget.TextView
;
import
com.ydl.audioim.api.IAudioImService
;
import
com.ydl.ydlcommon.modular.ModularServiceManagerKt
;
import
com.yidianling.im.R
;
import
com.yidianling.im.session.extension.CustomAttachConsultCallStatus
;
import
com.yidianling.nimbase.common.ui.recyclerview.adapter.BaseMultiItemFetchLoadAdapter
;
...
...
@@ -17,6 +19,8 @@ public class MsgViewHolderConsultCallStatus extends MsgViewHolderBase {
private
ImageView
typeImageLeft
;
private
ImageView
typeImageRight
;
private
TextView
statusLabel
;
private
View
lineView
;
private
TextView
btnView
;
public
MsgViewHolderConsultCallStatus
(
BaseMultiItemFetchLoadAdapter
adapter
)
{
super
(
adapter
);
...
...
@@ -29,9 +33,11 @@ public class MsgViewHolderConsultCallStatus extends MsgViewHolderBase {
@Override
protected
void
inflateContentView
()
{
typeImageLeft
=
findViewById
(
R
.
id
.
type_img_left
);
typeImageRight
=
findViewById
(
R
.
id
.
type_img_right
);
statusLabel
=
findViewById
(
R
.
id
.
tv_state
);
typeImageLeft
=
findViewById
(
R
.
id
.
message_item_type_img_left
);
typeImageRight
=
findViewById
(
R
.
id
.
message_item_type_img_right
);
statusLabel
=
findViewById
(
R
.
id
.
message_item_avchat_state
);
lineView
=
findViewById
(
R
.
id
.
message_item_avchat_line
);
btnView
=
findViewById
(
R
.
id
.
message_item_avchat_btn
);
}
@Override
...
...
@@ -57,6 +63,21 @@ public class MsgViewHolderConsultCallStatus extends MsgViewHolderBase {
}
else
{
statusLabel
.
setText
(
customAttachTipMsg
.
getCaller
());
}
long
messageTime
=
message
.
getTime
();
boolean
isExpired
=
System
.
currentTimeMillis
()
-
messageTime
>
60
*
1000
;
Integer
pullCall
=
customAttachTipMsg
.
getPullCall
();
if
(!
isExpired
&&
pullCall
!=
null
&&
pullCall
==
1
)
{
lineView
.
setVisibility
(
View
.
VISIBLE
);
btnView
.
setVisibility
(
View
.
VISIBLE
);
btnView
.
setOnClickListener
(
v
->
{
String
sessionId
=
message
.
getSessionId
();
ModularServiceManagerKt
.
findRouteService
(
IAudioImService
.
class
)
.
callCheck
(
v
.
getContext
(),
sessionId
,
0
);
});
}
else
{
lineView
.
setVisibility
(
View
.
GONE
);
btnView
.
setVisibility
(
View
.
GONE
);
}
}
@Override
...
...
@@ -78,5 +99,4 @@ public class MsgViewHolderConsultCallStatus extends MsgViewHolderBase {
return
R
.
drawable
.
im_message_send_content_bg
;
}
}
}
m-im/src/main/res/drawable/bg_btn1.xml
0 → 100644
View file @
83eda2bd
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
<corners
android:radius=
"40dp"
/>
<gradient
android:endColor=
"#159CEF"
android:startColor=
"#22BFFF"
/>
</shape>
\ No newline at end of file
m-im/src/main/res/layout/im_ui_message_custom_consult_call_status.xml
View file @
83eda2bd
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/ll_content"
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:id=
"@+id/message_item_avchat_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:padding=
"6dp"
android:minHeight=
"40dp"
android:orientation=
"horizontal"
>
android:orientation=
"vertical"
android:padding=
"6dp"
>
<ImageView
android:id=
"@+id/type_img_left"
android:layout_width=
"14dp"
android:layout_height=
"14dp"
android:layout_gravity=
"center_vertical"
android:id=
"@+id/message_item_type_img_left"
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:layout_marginLeft=
"3dp"
android:layout_marginRight=
"3dp"
android:
contentDescription=
"@string/im_empty
"
android:
src=
"@drawable/im_avchat_type_audio
"
android:visibility=
"gone"
android:src=
"@drawable/im_avchat_type_audio"
/>
android:scaleType=
"center"
app:layout_constraintBottom_toBottomOf=
"@+id/message_item_avchat_state"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintTop_toTopOf=
"@+id/message_item_avchat_state"
/>
<TextView
android:id=
"@+id/
tv
_state"
android:id=
"@+id/
message_item_avchat
_state"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginLeft=
"5dp"
android:layout_marginTop=
"4dp"
android:layout_marginRight=
"5dp"
android:text=
"无人接听"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"14sp"
/>
android:text=
"无人接听111111111"
android:textColor=
"@color/color_242424"
android:textSize=
"15sp"
app:layout_constraintLeft_toRightOf=
"@+id/message_item_type_img_left"
app:layout_constraintRight_toLeftOf=
"@+id/message_item_type_img_right"
app:layout_constraintTop_toTopOf=
"parent"
/>
<ImageView
android:visibility=
"gone"
android:id=
"@+id/type_img_right"
android:layout_width=
"14dp"
android:layout_height=
"14dp"
android:id=
"@+id/message_item_type_img_right"
android:layout_width=
"30dp"
android:layout_height=
"30dp"
android:layout_gravity=
"center_vertical"
android:layout_marginLeft=
"3dp"
android:layout_marginRight=
"3dp"
android:contentDescription=
"@string/im_empty"
android:src=
"@drawable/im_avchat_type_audio"
/>
</LinearLayout>
android:src=
"@drawable/im_avchat_type_audio"
android:visibility=
"gone"
android:scaleType=
"center"
app:layout_constraintBottom_toBottomOf=
"@+id/message_item_avchat_state"
app:layout_constraintLeft_toRightOf=
"@+id/message_item_avchat_state"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"@+id/message_item_avchat_state"
/>
<View
android:id=
"@+id/message_item_avchat_line"
android:layout_width=
"0dp"
android:layout_height=
"0.5dp"
android:layout_marginTop=
"12dp"
android:background=
"@color/platform_color_EBEBEB"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/message_item_avchat_state"
/>
<TextView
android:id=
"@+id/message_item_avchat_btn"
android:layout_width=
"wrap_content"
android:layout_height=
"32dp"
android:layout_marginTop=
"10dp"
android:layout_marginRight=
"4dp"
android:background=
"@drawable/bg_btn1"
android:gravity=
"center"
android:paddingLeft=
"15dp"
android:paddingRight=
"15dp"
android:text=
"立即接听"
android:textColor=
"@color/white"
android:layout_marginBottom=
"4dp"
android:textSize=
"15dp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/message_item_avchat_line"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
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