[6.2.0]
[xiaozhi] [权限转移到 mogo]
This commit is contained in:
@@ -8,6 +8,7 @@ import android.util.AttributeSet
|
||||
import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import androidx.core.graphics.scale
|
||||
import com.magic.mogo.och.charter.R
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import me.jessyan.autosize.AutoSizeConfig
|
||||
@@ -85,9 +86,10 @@ class SlidePanelView @JvmOverloads constructor(
|
||||
val size = AutoSizeUtils.dp2px(context, 120f)
|
||||
val opts = BitmapFactory.Options()
|
||||
opts.inDensity = AutoSizeConfig.getInstance().initDensity.toInt()
|
||||
bmBlock = BitmapFactory.decodeResource(resources, R.drawable.charter_base_slide_block, opts) as Bitmap
|
||||
bmBlock = Bitmap.createScaledBitmap(bmBlock!!, size, size, true) as Bitmap
|
||||
blockWidth = bmBlock!!.width
|
||||
bmBlock = (BitmapFactory.decodeResource(resources, R.drawable.charter_base_slide_block, opts) as Bitmap).apply {
|
||||
scale(size,size)
|
||||
blockWidth = width
|
||||
}
|
||||
}
|
||||
|
||||
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
||||
|
||||
@@ -7,10 +7,6 @@ import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.widget.ImageView
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
|
||||
import com.mogo.och.common.module.wigets.ZhiView
|
||||
import java.lang.RuntimeException
|
||||
import java.lang.ref.SoftReference
|
||||
|
||||
@@ -105,6 +101,7 @@ class FrameAnimatorContainer (resId: Int,
|
||||
@Synchronized
|
||||
fun reStart(){
|
||||
mIndex = -1
|
||||
mIsRunning = false
|
||||
start()
|
||||
}
|
||||
|
||||
|
||||
@@ -1,22 +1,27 @@
|
||||
package com.mogo.och.common.module.wigets
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import androidx.appcompat.widget.AppCompatImageView
|
||||
import androidx.core.app.ActivityCompat
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxType
|
||||
import com.mogo.eagle.core.data.msgbox.VoiceMsg
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
|
||||
import com.mogo.eagle.core.function.main.MainPresenter
|
||||
import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.mogo.permissions.PermissionsDialogUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
||||
import com.mogo.och.common.module.R
|
||||
import com.mogo.och.common.module.utils.FrameAnimatorContainer
|
||||
import com.mogo.och.common.module.utils.PermissionUtil
|
||||
import com.mogo.tts.base.zhi.AsrTextBean
|
||||
import com.mogo.tts.base.zhi.CallbackWidget
|
||||
import com.mogo.tts.base.zhi.AvatarManager
|
||||
import com.mogo.tts.base.zhi.CallbackWidget
|
||||
import com.mogo.tts.base.zhi.ZhiRecordWinUi
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
|
||||
class ZhiView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
@@ -98,7 +103,23 @@ class ZhiView @JvmOverloads constructor(
|
||||
}
|
||||
})
|
||||
onClick {
|
||||
AvatarManager.wakeupXiaoZhi()
|
||||
if (PermissionUtil.checkPermission(context,Manifest.permission.RECORD_AUDIO)) {
|
||||
AvatarManager.wakeupXiaoZhi()
|
||||
}else{
|
||||
//申请悬浮窗权限
|
||||
val shouldShowRequestPermissionRationale = ActivityUtils.getTopActivity()
|
||||
.shouldShowRequestPermissionRationale(Manifest.permission.RECORD_AUDIO)
|
||||
if(shouldShowRequestPermissionRationale){// 可以弹窗系统权限框
|
||||
ActivityCompat.requestPermissions(ActivityUtils.getTopActivity(),
|
||||
arrayOf(
|
||||
Manifest.permission.RECORD_AUDIO,
|
||||
), MainPresenter.MOGO_PERMISSION_REQUEST_CODE
|
||||
)
|
||||
}else{// 不会弹系统弹窗
|
||||
PermissionsDialogUtils.openAppDetails(ActivityUtils.getTopActivity(), "录音机", 100)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,6 +127,9 @@ class ZhiView @JvmOverloads constructor(
|
||||
super.onWindowFocusChanged(hasWindowFocus)
|
||||
CallerLogger.d(SceneConstant.M_OCHCOMMON + TAG, "焦点与否:${hasWindowFocus}")
|
||||
AvatarManager.enableXiaoZhi(!hasWindowFocus)
|
||||
if(hasWindowFocus){
|
||||
currentAnim.reStart()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
@@ -127,7 +151,9 @@ class ZhiView @JvmOverloads constructor(
|
||||
CallerLogger.d(TAG,"-----onStatusChange $status")
|
||||
this.status = status?:ZhiRecordWinUi.RecordStatus.STATUS_SILENCE
|
||||
when (status) {
|
||||
ZhiRecordWinUi.RecordStatus.STATUS_SILENCE -> {}
|
||||
ZhiRecordWinUi.RecordStatus.STATUS_SILENCE -> {
|
||||
currentAnim.stop()
|
||||
}
|
||||
ZhiRecordWinUi.RecordStatus.STATUS_LISTENING -> {// 监听中
|
||||
currentAnim.stop()
|
||||
}
|
||||
@@ -154,8 +180,7 @@ class ZhiView @JvmOverloads constructor(
|
||||
|
||||
override fun close(trigger: Boolean) {
|
||||
CallerLogger.d(TAG,"-----close $trigger")
|
||||
status = ZhiRecordWinUi.RecordStatus.STATUS_SILENCE
|
||||
currentAnim.stop()
|
||||
onStatusChange(ZhiRecordWinUi.RecordStatus.STATUS_SILENCE)
|
||||
val msg = VoiceMsg(
|
||||
isWakeUp = false,
|
||||
isWakeUpEnd = true,
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package com.mogo.eagle.core.function.main
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.provider.Settings
|
||||
import android.view.*
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.kwai.koom.base.MonitorManager.addMonitorConfig
|
||||
@@ -38,6 +41,7 @@ import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView
|
||||
import com.mogo.eagle.core.function.main.modules.MogoModulesManager
|
||||
import com.mogo.eagle.core.function.main.windowview.FloatingViewHandler
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
@@ -49,7 +53,8 @@ import com.mogo.map.listener.IMogoMapListener
|
||||
import com.mogo.map.listener.MogoMapListenerHandler.Companion.mogoMapListenerHandler
|
||||
import com.mogo.map.uicontroller.EnumMapUI
|
||||
import com.zhjt.service.chain.ChainLog
|
||||
import kotlinx.android.synthetic.main.module_main_activity_main.*
|
||||
import kotlinx.android.synthetic.main.module_main_activity_main.module_main_id_cover_up
|
||||
import kotlinx.android.synthetic.main.module_main_activity_main.rvConnectInfo
|
||||
import java.io.File
|
||||
|
||||
|
||||
@@ -378,10 +383,32 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
|
||||
if (requestCode == MainPresenter.MOGO_PERMISSION_REQUEST_CODE) {
|
||||
var isAllGranted = true
|
||||
// 判断是否所有的权限都已经授予了
|
||||
for (grant in grantResults) {
|
||||
val reasong = StringBuffer()
|
||||
grantResults.forEachIndexed { index, grant ->
|
||||
if (grant != PackageManager.PERMISSION_GRANTED) {
|
||||
isAllGranted = false
|
||||
break
|
||||
when (permissions[index]) {
|
||||
Manifest.permission.RECORD_AUDIO -> {
|
||||
reasong.append("录音机、")
|
||||
}
|
||||
Manifest.permission.BLUETOOTH -> {
|
||||
reasong.append("蓝牙、")
|
||||
}
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE -> {
|
||||
reasong.append("读取外部文件、")
|
||||
}
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE -> {
|
||||
reasong.append("写入外部文件、")
|
||||
}
|
||||
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
|
||||
Manifest.permission.ACCESS_FINE_LOCATION,
|
||||
Manifest.permission.ACCESS_COARSE_LOCATION -> {
|
||||
if(!reasong.contains("定位")){
|
||||
reasong.append("定位、")
|
||||
}
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isAllGranted) {
|
||||
@@ -389,7 +416,12 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
|
||||
} else {
|
||||
// 弹出对话框告诉用户需要权限的原因, 并引导用户去应用权限管理中手动打开权限按钮
|
||||
if (!isFirst) {
|
||||
PermissionsDialogUtils.openAppDetails(this, null, REQUEST_CODE_DIALOG)
|
||||
if (reasong.isNotEmpty()) {
|
||||
val substring = reasong.substring(0, reasong.length - 2)
|
||||
PermissionsDialogUtils.openAppDetails(this, substring, REQUEST_CODE_DIALOG)
|
||||
}else {
|
||||
PermissionsDialogUtils.openAppDetails(this, null, REQUEST_CODE_DIALOG)
|
||||
}
|
||||
isFirst = true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,7 +77,8 @@ public class MainPresenter extends Presenter<MainView> {
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
|
||||
Manifest.permission.ACCESS_FINE_LOCATION
|
||||
Manifest.permission.ACCESS_FINE_LOCATION,
|
||||
Manifest.permission.ACCESS_COARSE_LOCATION,
|
||||
}, MOGO_PERMISSION_REQUEST_CODE);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user