Explorar o código

## [1.0.10] version 10 - 2020-07-08
### Changed
- 事件震动优化,震动2次,响应完成停止震动
### Added
- 通话时如果检测有蓝牙设备,则从蓝牙设备通讯

allen %!s(int64=4) %!d(string=hai) anos
pai
achega
cab4e133fc

+ 2 - 2
build.gradle

@@ -47,12 +47,12 @@ buildscript {
     /**
      * APP版本码
      */
-    ext.app_version_code = 9
+    ext.app_version_code = 10
 
     /**
      * APP版本号
      */
-    ext.app_version = "1.0.9"
+    ext.app_version = "1.0.10"
 
     /**
      * 项目依赖库

+ 1 - 45
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WebRTCVoipAudioActivity.kt

@@ -173,9 +173,8 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
                 }
             }
             R.id.hands_free_image -> {
-                Log.i(TAG,"handsFree "+handsFree)
+                Log.i(TAG,"声音切换点击")
                 if (!handsFree) {
-                    Log.i(TAG,"handsFree222 "+handsFree)
                     hands_free_image.setImageResource(R.drawable.av_handfree_hover)
                     val session = gEngineKit?.getCurrentSession()
                     if (session != null) {
@@ -183,7 +182,6 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
                     }
                     handsFree = true
                 } else {
-                    Log.i(TAG,"handsFree333 "+handsFree)
                     hands_free_image.setImageResource(R.drawable.av_handfree)
                     val session = gEngineKit?.getCurrentSession()
                     if (session != null) {
@@ -266,48 +264,6 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
         }
     }
 
-
-//    override fun onBackPressed() {
-//        AlertDialog.Builder(this).setCancelable(true)
-//                .setTitle("是否挂断?")
-//                .setNegativeButton("取消") { arg0, arg1
-//                    -> }.setPositiveButton("确定"
-//                ) { arg0, arg1 ->
-//                    var interactionVO: InteractionVO? = null
-//                    if (tcpModel.data.javaClass.name == String::class.java.name) {
-//                        interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
-//                    } else {
-//                        interactionVO = tcpModel.data as InteractionVO
-//                    }
-//                    Log.e(TAG, "tcpModel" + interactionVO!!.id!!)
-//                    Log.e(TAG, "tcpModel" + tcpModel.toJson())
-//                    //todo 给服务器发送挂断 tcp
-//                    if (interactionVO != null) {
-//                        if (tcpModel.type == TcpType.VOICE) {
-//                            if (tcpModel.action === TcpAction.VoiceAction.SUCCESS) {
-//                                val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel.toId, interactionVO.id)
-//                                TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
-//                            } else if (tcpModel.action === TcpAction.VoiceAction.CALL) {
-//                                val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel.fromId, interactionVO.id)
-//                                TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
-//                            }
-////                      SipHelperUtil.getInstance(this).getmSipCallBack().endCall()
-//
-//                            //webrtc
-//                            val session = gEngineKit?.getCurrentSession()
-//                            if (session != null) {
-//                                SkyEngineKit.Instance().endCall()
-//                            }
-//
-//                            finish()
-//
-//                        }
-//
-//                    }
-//
-//                }.show()
-//    }
-
     override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
         if (keyCode == KeyEvent.KEYCODE_BACK) {
 //            Toast.makeText(this, "按下了back键   onKeyDown()", Toast.LENGTH_SHORT).show()

+ 7 - 0
readme.md

@@ -25,6 +25,13 @@
 在发布新版本时,可以直接将Unreleased区块中的内容移动至新发 布版本的描述区块就可以了
 
 ---
+## [1.0.10] version 10 - 2020-07-08
+### Changed
+- 事件震动优化,震动2次,响应完成停止震动
+### Added
+- 通话时如果检测有蓝牙设备,则从蓝牙设备通讯
+---
+
 ## [1.0.9] version 9 - 2020-07-07
 ### Changed
 - 优化TCP处理的逻辑,DeviceChannel 及 TcpHandleService

+ 4 - 1
rtc-chat/src/main/AndroidManifest.xml

@@ -1,2 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.wdkl.skywebrtc" />
+    package="com.wdkl.skywebrtc" >
+
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+</manifest>

+ 39 - 27
rtc-chat/src/main/java/com/wdkl/skywebrtc/engine/webrtc/WebRTCEngine.java

@@ -2,6 +2,8 @@ package com.wdkl.skywebrtc.engine.webrtc;
 
 import android.annotation.TargetApi;
 import android.app.Activity;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothHeadset;
 import android.content.Context;
 import android.content.Intent;
 import android.media.AudioDeviceInfo;
@@ -193,8 +195,6 @@ public class WebRTCEngine implements IEngine, Peer.IPeerEvent {
             peer.setRemoteDescription(sdp);
             peer.createAnswer();
         }
-
-
     }
 
     @Override
@@ -205,8 +205,6 @@ public class WebRTCEngine implements IEngine, Peer.IPeerEvent {
             SessionDescription sessionDescription = new SessionDescription(SessionDescription.Type.ANSWER, sdp);
             peer.setRemoteDescription(sessionDescription);
         }
-
-
     }
 
     @Override
@@ -240,8 +238,6 @@ public class WebRTCEngine implements IEngine, Peer.IPeerEvent {
                 peers.clear();
             }
         }
-
-
     }
 
     @Override
@@ -305,15 +301,12 @@ public class WebRTCEngine implements IEngine, Peer.IPeerEvent {
 
     @Override
     public void startStream() {
-
     }
 
     @Override
     public void stopStream() {
-
     }
 
-
     @Override
     public View setupRemoteVideo(String userId, boolean isO) {
         if (TextUtils.isEmpty(userId)) {
@@ -328,7 +321,6 @@ public class WebRTCEngine implements IEngine, Peer.IPeerEvent {
         }
 
         return peer.renderer;
-
     }
 
     @Override
@@ -374,32 +366,52 @@ public class WebRTCEngine implements IEngine, Peer.IPeerEvent {
         return false;
     }
 
+    public boolean audioToBluetoothDevice(){
+        BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+        boolean isBluetoothHeadsetConnected =  (bluetoothAdapter != null && bluetoothAdapter.isEnabled()
+                && bluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_CONNECTED);
+
+        return isBluetoothHeadsetConnected;
+    }
+
     @Override
     public boolean toggleSpeaker(boolean enable) {
         if (audioManager != null) {
             isSpeakerOn = enable;
             audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
-            if (enable) {
-                audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,
-                        audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL),
-                        AudioManager.FX_KEY_CLICK);
-                audioManager.setSpeakerphoneOn(true);
-            } else {
-                //5.0以上
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-                    //设置mode
-                    audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
-                } else {
-                    //设置mode
-                    audioManager.setMode(AudioManager.MODE_IN_CALL);
-                }
-                //设置音量,解决有些机型切换后没声音或者声音突然变大的问题
+            if (audioToBluetoothDevice()){
                 audioManager.setStreamVolume(
-                        AudioManager.STREAM_VOICE_CALL,
-                        audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL),
+                        AudioManager.STREAM_MUSIC,
+                        audioManager.getStreamVolume(AudioManager.STREAM_MUSIC),
                         AudioManager.FX_KEY_CLICK
                 );
                 audioManager.setSpeakerphoneOn(false);
+
+                audioManager.startBluetoothSco();
+                audioManager.setBluetoothScoOn(true);
+            } else {
+                if (enable) {
+                    audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,
+                            audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL),
+                            AudioManager.FX_KEY_CLICK);
+                    audioManager.setSpeakerphoneOn(true);
+                } else {
+                    //5.0以上
+                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+                        //设置mode
+                        audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
+                    } else {
+                        //设置mode
+                        audioManager.setMode(AudioManager.MODE_IN_CALL);
+                    }
+                    //设置音量,解决有些机型切换后没声音或者声音突然变大的问题
+                    audioManager.setStreamVolume(
+                            AudioManager.STREAM_VOICE_CALL,
+                            audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL),
+                            AudioManager.FX_KEY_CLICK
+                    );
+                    audioManager.setSpeakerphoneOn(false);
+                }
             }
             return true;
         }