当前位置: 首页 > news >正文

uniapp原生插件

前言

使用uniapp开发Android app时,一些特定的需求没办法实现的时候就只能开发原生插件或者uts插件去满足需求,我的需求目前uts插件没法实现,只能靠原生插件了😆

需求:拍照不保存图片到相册,uniapp的API或者h5+都没法达到目的

实践

导入离线SDK
Android 离线SDK - 正式版 | uni小程序SDK

开发插件

CameraModule

    @UniJSMethod(uiThread = true)public void takePicture(JSONObject options, UniJSCallback callback) {if (mUniSDKInstance.getContext() instanceof Activity) {Activity activity = (Activity) mUniSDKInstance.getContext();mJSCallback = callback;if (ContextCompat.checkSelfPermission(activity, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.CAMERA}, REQUEST_PERMISSION_CAMERA);return;}Intent intent = new Intent(activity, SimpleCameraActivity.class);activity.startActivityForResult(intent, REQUEST_SIMPLE_CAMERA);} else {if (callback != null) {JSONObject result = new JSONObject();result.put("code", -1);result.put("message", "Failed to get activity context");callback.invoke(result);}}}

 SimpleCameraActivity

    private void startCamera(SurfaceHolder holder) {try {mCamera = Camera.open(mCameraId);mCamera.setPreviewDisplay(holder);Camera.Parameters parameters = mCamera.getParameters();List<Camera.Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes();Camera.Size optimalSize = getOptimalPreviewSize(supportedPreviewSizes, mSurfaceView.getWidth(), mSurfaceView.getHeight());if (optimalSize != null) {parameters.setPreviewSize(optimalSize.width, optimalSize.height);Log.d(TAG, "Preview size set to: " + optimalSize.width + "x" + optimalSize.height);}List<String> focusModes = parameters.getSupportedFocusModes();if (focusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);} else if (focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);}mCamera.setParameters(parameters);setCameraDisplayOrientation();mCamera.startPreview();mIsSafeToTakePicture = true;} catch (Exception e) {Log.e(TAG, "Error starting camera: " + e.getMessage());Toast.makeText(this, "无法启动相机: " + e.getMessage(), Toast.LENGTH_SHORT).show();setResult(RESULT_ERROR);finish();}}

调试插件

跟本地打包配置一个样,之前文章有写啦就不再赘述!

最后

通过camera api 拍照不保存到相册的问题解决啦,不过缓存的问题还需要优化,采用原生插件的话就没法本地打包,很烦的一点!😑

相关文章:

  • vscode里几种程序调试配置
  • Swagger、Springfox、Springdoc-openapi 到底是什么关系
  • .NET外挂系列:7. harmony在高级调试中的一些实战案例
  • Jetson系统烧录与环境配置全流程详解(含驱动、GCC、.Net设置)
  • hadoop 无法存储数据到hbase里面 已经解决
  • 【论文阅读】LLaVA-OneVision: Easy Visual Task Transfer
  • Grafana XSSOpenRedirectSSRF漏洞复现(CVE-2025-4123)
  • AI与.NET技术实操系列(七):使用Emgu CV进行计算机视觉操作
  • 微信小程序调用蓝牙API “wx.writeBLECharacteristicValue()“ 报 errCode: 10008 的解决方案
  • 无法访问org.springframework.boot.SpringApplication
  • Android Studio 开发环境兼容性检索(AGP / Gradle / Kotlin / JDK)
  • 【数据架构03】数据治理架构篇
  • k8s容器入门(2) 容器化组件“可漂移“
  • 使用KubeKey快速部署k8s v1.31.8集群
  • 黑马k8s(十三)
  • Python刷题:神奇的函数
  • linux 内核warn_on/Bug_on
  • Java多线程同步:确保并发安全的关键策略
  • 肿瘤特异性标志物CD248
  • AES加密模式详解及OpenSSL C库函数指南
  • 注册网站要百度实名认证安不安全/郑州seo优化哪家好
  • 黄骗免费网站/买链接网站
  • 网站在工信部备案如何做/网络营销的基本方法有哪些
  • 罗湖做网站运营乐云seo/集客营销软件官方网站
  • 谁家做网站比较好/搜狗推广平台
  • 怎么做电子商务网站/seo管理平台