当前位置: 首页 > 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 拍照不保存到相册的问题解决啦,不过缓存的问题还需要优化,采用原生插件的话就没法本地打包,很烦的一点!😑

http://www.xdnf.cn/news/600373.html

相关文章:

  • Profibus转Profinet网关赋能鼓式硫化机:智能化生产升级的关键突破
  • 多模态大语言模型arxiv论文略读(九十一)
  • vscode使用ssh链接服务器
  • 飞桨(PaddlePaddle)在机器学习全流程(数据采集、处理、标注、建模、分析、优化)
  • [论文阅读]Pandora: Jailbreak GPTs by Retrieval Augmented Generation Poisoning
  • [ Qt ] | 常见控件(一)
  • Oracle 基础知识作业的使用
  • NLP入门指南:零基础理解自然语言处理
  • 医学人工智能中的分层处理与跨模态融合:深度架构设计研究(基础教程.下)
  • Ensp --四路由练习
  • fpga-编程线性序列机和状态机
  • MySQL 派生表查询导致 Crash 的根源分析与解决方案
  • (万字长文)Django数据库操作——ORM:数据交互显示前端网页
  • JVM——Java 虚拟机的监控及诊断工具(GUI 篇)
  • vue2中,codemirror编辑器的使用
  • SpringMVC(结合源码浅析工作流程)
  • 【Mysql|数据恢复】rm -rf 误删数据库文件恢复
  • opencv彩图-直方图均衡化
  • 论文略读:If Multi-Agent Debate is the Answer, What is the Question?
  • 一条SQL语句的旅程:解析、优化与执行全过程研究
  • 讯联文库开发日志(五)登录拦截校验
  • 《STL--- vector的使用及其底层实现》
  • CAD球体功能梯度材料3D插件
  • Data Whale
  • 今日打卡,Leetcode第四题:寻找两个正序数组的中位数,博主表示就会sorted
  • 飞书知识问答产品测评:让企业玩转AI
  • 外卖跑腿小程序评价系统框架搭建
  • 《算法导论(第4版)》阅读笔记:p115-p126
  • 机器人强化学习入门学习笔记(四)
  • 对Android中binder的理解