diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 579012e..7c9c9c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,7 +82,7 @@ android:name=".ui.SprayingActivity" android:exported="false" /> () { - override fun fullscreen(): Boolean = true - override fun getLayoutId(): Int = R.layout.activity_main - - private val vm: MainVM by viewModels() - - override fun initView(savedInstanceState: Bundle?) { - super.initView(savedInstanceState) - - - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt index 28fce33..53b7585 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt @@ -37,6 +37,7 @@ class ReviewActivity : BaseListFormLayoutNormalActivity() { +class SprayingActivity : + BaseListFormLayoutNormalActivity() { override fun getLayoutId(): Int = R.layout.activity_spraying override fun fullscreen(): Boolean = true @@ -26,28 +36,91 @@ class SprayingActivity : BaseListFormLayoutNormalActivity { finish() } + + "开始", "拍照", "开始拍照", "开始任务" -> { + runOnUiThread { + binding.hint.text = "拍照中,请稍后..." + } + isPhoto = true + takePhoto() + } } } } + + } + + fun takePhoto() { + val fileName = "test_${System.currentTimeMillis()}.png" + val publicPicturesDir = + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + val file = File(publicPicturesDir, fileName) + GlassSdk.getGlassMediaService() + ?.takePhoto(PhotoResolution.RESOLUTION_480P, file.absolutePath) + } + + private val photoCallbackId = UUID.randomUUID().toString() + + private val mPhotoFileCallback = object : PhotoFileCallback.Stub() { + override fun onTakePhoto(path: String) { + LogHelper.d("onTakePhoto-->path = $path") + } + + override fun getCallbackId(): String { + return photoCallbackId + } + + override fun onTakePhotoV2(path: String?, width: Int, height: Int) { + LogHelper.d("width:$width--height:$height") + if (path == null) { + if (isPhoto) { + isPhoto = false + takePhoto() + } else { + runOnUiThread { + binding.hint.text = "单击或语音输入“开始”,进入下一步" + } + "相机异常".showMessage() + } + } else { + startActivity(Intent(this@SprayingActivity, SprayingOCRActivity::class.java).apply { + putExtra("path", path) + }) + finish() +// runOnUiThread { +// binding.hint.text = "单击或语音输入“开始”,进入下一步" +// binding.iv.setImageBitmap(BitmapFactory.decodeFile(path)) +// } + } + } } + override fun initData() { super.initData() + window.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) OfflineCmdServiceHelper.addOnLineListener(listener) + GlassSdk.getGlassMediaService()?.addPhotoCallback(mPhotoFileCallback) } override fun onDestroy() { super.onDestroy() OfflineCmdServiceHelper.removeOnLineListener(listener) + GlassSdk.getGlassMediaService()?.removePhotoCallback(mPhotoFileCallback) } + private var isPhoto = false private val adapter = object : CommonPagedAdapter(R.layout.item_photo) { override fun convert(holder: ViewHolder, item: ItemItem, position: Int) { holder .setClickListener(R.id.photo) { when (item.text) { "拍照" -> { - + runOnUiThread { + binding.hint.text = "拍照中,请稍后..." + } + isPhoto = true + takePhoto() } } } diff --git a/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt new file mode 100644 index 0000000..fd65ae8 --- /dev/null +++ b/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt @@ -0,0 +1,129 @@ +package com.nova.brain.glass.ui + +import android.R.attr.path +import android.graphics.BitmapFactory +import android.os.Environment +import android.view.WindowManager +import androidx.recyclerview.widget.RecyclerView +import com.nova.brain.glass.R +import com.nova.brain.glass.databinding.ActivitySprayingBinding +import com.nova.brain.glass.databinding.ActivitySprayingOcrBinding +import com.nova.brain.glass.helper.OfflineCmdListener +import com.nova.brain.glass.helper.OfflineCmdServiceHelper +import com.nova.brain.glass.model.ItemItem +import com.nova.brain.glass.viewmodel.SprayingVM +import com.rokid.security.glass3.open.sdk.GlassSdk +import com.rokid.security.glass3.sdk.base.data.media.PhotoResolution +import com.rokid.security.system.server.media.callback.PhotoFileCallback +import com.xuqm.base.adapter.BasePagedAdapter +import com.xuqm.base.adapter.CommonPagedAdapter +import com.xuqm.base.adapter.ViewHolder +import com.xuqm.base.common.FileHelper +import com.xuqm.base.common.LogHelper +import com.xuqm.base.extensions.showMessage +import com.xuqm.base.ui.BaseListFormLayoutNormalActivity +import java.io.File +import java.util.UUID + +class SprayingOCRActivity : + BaseListFormLayoutNormalActivity() { + override fun getLayoutId(): Int = R.layout.activity_spraying_ocr + override fun fullscreen(): Boolean = true + + override fun getRecyclerOrientation(): Int = RecyclerView.VERTICAL + + private val listener = object : OfflineCmdListener { + override fun onOfflineCmd(cmd: String) { + runOnUiThread { + when (cmd) { + "退出", "返回", "退回" -> { + finish() + } + "开始", "拍照", "开始拍照", "开始任务", "重拍", "重新拍", "在拍一次" -> { + runOnUiThread { + binding.hint.text = "拍照中,请稍后..." + } + isPhoto = true + takePhoto() + } + } + } + } + + } + + fun takePhoto() { + val fileName = "test_${System.currentTimeMillis()}.png" + val publicPicturesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + val file = File(publicPicturesDir, fileName) + GlassSdk.getGlassMediaService()?.takePhoto(PhotoResolution.RESOLUTION_480P, file.absolutePath) + } + private val photoCallbackId = UUID.randomUUID().toString() + + private val mPhotoFileCallback = object : PhotoFileCallback.Stub() { + override fun onTakePhoto(path: String) { + LogHelper.d("onTakePhoto-->path = $path") + } + + override fun getCallbackId(): String { + return photoCallbackId + } + + override fun onTakePhotoV2(path: String?, width: Int, height: Int) { + LogHelper.d("width:$width--height:$height") + if (path == null) { + if (isPhoto) { + isPhoto = false + takePhoto() + } else { + runOnUiThread { + binding.hint.text = "单击或语音输入“重拍”,可重新拍摄" + } + "相机异常".showMessage() + } + } else { + runOnUiThread { + binding.hint.text = "单击或语音输入“重拍”,可重新拍摄" + binding.content.setImageBitmap(BitmapFactory.decodeFile(path)) + } + } + } + } + + + override fun initData() { + super.initData() + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + OfflineCmdServiceHelper.addOnLineListener(listener) + GlassSdk.getGlassMediaService()?.addPhotoCallback(mPhotoFileCallback) + intent.getStringExtra("path")?.apply { + binding.content.setImageBitmap(BitmapFactory.decodeFile(this)) + } + } + + override fun onDestroy() { + super.onDestroy() + OfflineCmdServiceHelper.removeOnLineListener(listener) + GlassSdk.getGlassMediaService()?.removePhotoCallback(mPhotoFileCallback) + } + + private var isPhoto = false + private val adapter = object : CommonPagedAdapter(R.layout.item_photo) { + override fun convert(holder: ViewHolder, item: ItemItem, position: Int) { + holder + .setClickListener(R.id.photo) { + when (item.text) { + "拍照" -> { + runOnUiThread { + binding.hint.text = "拍照中,请稍后..." + } + isPhoto = true + takePhoto() + } + } + } + } + } + + override fun adapter(): BasePagedAdapter = adapter +} diff --git a/app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt index 79681c3..6b58cfa 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/WelcomeActivity.kt @@ -39,13 +39,11 @@ class WelcomeActivity : BaseActivity() { override fun onResume() { super.onResume() - LogHelper.d(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>") OfflineCmdServiceHelper.addOnLineListener(offlineCmdListener) } override fun onPause() { super.onPause() - LogHelper.d("---------------------------") OfflineCmdServiceHelper.removeOnLineListener(offlineCmdListener) } diff --git a/app/src/main/res/layout/activity_spraying.xml b/app/src/main/res/layout/activity_spraying.xml index 22d1805..d6fd41c 100644 --- a/app/src/main/res/layout/activity_spraying.xml +++ b/app/src/main/res/layout/activity_spraying.xml @@ -94,6 +94,7 @@ + diff --git a/app/src/main/res/layout/activity_spraying_ocr.xml b/app/src/main/res/layout/activity_spraying_ocr.xml new file mode 100644 index 0000000..0070e4b --- /dev/null +++ b/app/src/main/res/layout/activity_spraying_ocr.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_welcome.xml b/app/src/main/res/layout/activity_welcome.xml index 59ec4b3..49e9707 100644 --- a/app/src/main/res/layout/activity_welcome.xml +++ b/app/src/main/res/layout/activity_welcome.xml @@ -8,18 +8,13 @@ android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:background="@color/app_color_black" - android:layout_alignParentTop="true" android:textColor="#ff3FFF5F" android:textSize="19sp" android:text="您可以说:Nova,我的任务有哪些?" - android:fontFamily="Source Han Sans" app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" - android:gravity="left|top" - android:alpha="1" />