uts插件开发-继uniapp原生插件nativeplugins,uts插件开发可直接操作原生安卓sdk等,支持uniappx,支持源码授权价格等等

news/2024/9/24 0:57:06/

1.创建uts项目

2.创建uts插件cf-takepic

3.在index.uts中编写原生安卓代码,首先定义一个函数方法,在页面中看是否可引用成功

uts函数代码

/*** 拍照函数*/
export const takepic=function():void{console.log("11111111")
}

index.vue代码

<template><view class="content"><view class="text-area"><button @click="take">拍照</button></view></view>
</template><script>//引入uts插件import {takepic} from "../../uni_modules/cf-takepic"export default {data() {return {}},onLoad() {},methods: {take(){//调用uts插件函数takepic()}}}
</script><style>.content {display: flex;flex-direction: column;align-items: center;justify-content: center;}</style>

4.运行到手机或模拟器,成功打印111111即可视为调用uts插件成功

5.修改uts插件takepic函数,原生android唤起手机相机功能

uts代码

/*** 引用 Android 系统库,示例如下:* import { Context } from "android.content.Context";* [可选实现,按需引入]*//* 引入 interface.uts 文件中定义的变量 */
import { MyApiOptions, MyApiResult, MyApi, MyApiSync } from '../interface.uts';/* 引入 unierror.uts 文件中定义的变量 */
import { MyApiFailImpl } from '../unierror';
import Intent from "android.content.Intent";
import MediaStore from "android.provider.MediaStore";/*** 更多插件开发的信息详见:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html*/
/*** 拍照函数*/
export const takepic=function():void{console.log("11111111")let takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);UTSAndroid.getUniActivity()!.startActivityForResult(takePictureIntent, 999);UTSAndroid.onAppActivityResult((requestCode : Int, resultCode : Int, data ?: Intent) => {if (requestCode == 999) {console.log("拍照回调");} else {// 别的代码发起的请求,不要处理}});}

拍照打印日志

6.再次修改uts代码,获取图片路径

uts代码

/*** 引用 Android 系统库,示例如下:* import { Context } from "android.content.Context";* [可选实现,按需引入]*//* 引入 interface.uts 文件中定义的变量 */
import { MyApiOptions, MyApiResult, MyApi, MyApiSync } from '../interface.uts';/* 引入 unierror.uts 文件中定义的变量 */
import { MyApiFailImpl } from '../unierror';
import Intent from "android.content.Intent";
import MediaStore from "android.provider.MediaStore";
import File from "java.io.File";
import SimpleDateFormat from "java.text.SimpleDateFormat";
import Environment from "android.os.Environment";
import Uri from "android.net.Uri";
import FileProvider from "androidx.core.content.FileProvider";
import ActivityCompat from "androidx.core.app.ActivityCompat";
import Manifest from "android.Manifest";
import PackageManager from "android.content.pm.PackageManager";/*** 更多插件开发的信息详见:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html*/
/*** 拍照函数*/
export const takepic = function () : void {// 检查相关权限是否已经具备if (ActivityCompat.checkSelfPermission(UTSAndroid.getUniActivity()!, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {// 不具备权限,申请权限,并且告知用户监听失败ActivityCompat.requestPermissions(UTSAndroid.getUniActivity()!, arrayOf(Manifest.permission.CAMERA), 1002)return;}console.log("11111111")let takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);let photoFile = createImageFile();console.log(photoFile)let  photoUri = FileProvider.getUriForFile(UTSAndroid.getAppContext()!,"com.cf.take",photoFile as File); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri as Uri);UTSAndroid.getUniActivity()!.startActivityForResult(takePictureIntent, 999);UTSAndroid.onAppActivityResult((requestCode : Int, resultCode : Int, data ?: Intent) => {if (requestCode == 999) {console.log("拍照回调");console.log(photoUri.toString());} else {// 别的代码发起的请求,不要处理}});}export const createImageFile = function () : File {let timeStamp = "123456789";let imageFileName = "JPEG_" + timeStamp + "_";let storageDir  = UTSAndroid.getAppContext()!.getExternalFilesDir(Environment.DIRECTORY_PICTURES);console.log(storageDir,"storageDir")let image = File.createTempFile(imageFileName,  /* prefix */".jpg",         /* suffix */storageDir      /* directory */);
console.log(image,"image")return image as File;
}

日志


http://www.ppmy.cn/news/1456669.html

相关文章

C++语法|bind1st和bind2nd的用法

文章目录 What什么是&#xff1f;How什么时候用&#xff1f;如何用&#xff1f;bind1st和bind2nd的底层实现原理my_find_if分析myBind1st分析 What什么是&#xff1f; bind1st 和bind2nd分别是一个用来绑定函数对象的第一个参数或第二个参数的适配器。它在 C98 和 C03 标准中很…

信号与进程(3):信号及其使用

信号及其使用 参考博客 Linux信号的产生和处理 信号及其使用 信号的产生 信号由内核产生&#xff0c;信号的生成与事件的发生相关&#xff0c;事件的发生源有3类&#xff1a; 1、用户 用户在终端上按下某些按键时会产生信号&#xff0c;如**CtrlC产生SIGINT信号&#xff0…

Python中无法pip的解决办法和pip的介绍

什么是pip&#xff1f; PIP是通用的Python包管理工具&#xff0c;提供了对 Python 包的查找、下载、安装、卸载、更新等功能。安装诸如Pygame、Pymysql、requests、Django等Python包时&#xff0c;都要用到pip。 注意&#xff1a;在Python3.4&#xff08;一说是3.6&#xff09…

WSL 与操作系统的关系

点题 WSL&#xff08;Windows Subsystem for Linux&#xff09;是一个为在 Windows 系统上能够原生运行 Linux 二进制可执行文件&#xff08;如 Bash, sed, awk 等&#xff09;提供的兼容层。当你在 Windows 中安装并运行 WSL 时&#xff0c;实际上是在 Windows 内核之上启动了…

CSS精灵图、字体图标、HTML5新增属性、界面样式和网站 favicon 图标

精灵图 为什么要使用精灵图 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度,因此&#xff0c;为了有效地减少服务…

C++入门 ——类和对象(二)

this指针 this指针的引出 我们先来定义一个日期类 Date class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout <<_year<< "-" <<_month << "-"<< _da…

Gradio之blocks灵活搭建页面

这里写目录标题 搭建一个UI界面搭建上半部分的框架比例调节以及其他效果搭建下半部分左边部分搭建下半部分右边部分拓展-CSS的应用 使用标签搭建第二个页面示例 补充AccordionGroup() 搭建一个UI界面 搭建上半部分的框架 如下图&#xff0c;我们想要基本还原下图右边的UI界面…

iOS--runloop的初步认识

runloop的初步认识 简单认识runloopEvent looprunloop其实就是个对象NSRunloop和CFRunLoopRef的依赖关系runloop与线程runloop moderunloop sourceCFRunLoopSourceCFRunLoopObserverCFRunLoopTimer runloop的实现runloop的获取添加ModeCFRunLoopAddCommonMode 添加Run Loop Sou…