首页 > 其他分享 >uniapp/H5plus 获取手机桌面壁纸 (静态壁纸)

uniapp/H5plus 获取手机桌面壁纸 (静态壁纸)

时间:2024-02-09 19:44:25浏览次数:45  
标签:uniapp 桌面壁纸 Base64 plus importClass baos let android H5plus

找半天没找到相关的内容,自己捣鼓出来的,记录一下。(比较可惜的是只能获取静态图片,动态壁纸就不知道了咋弄了)

uniapp的话还可以参考一下如何用NJS获取手机桌面壁纸? - DCloud问答下面DCloud_heavensoft 大佬的一个回答 : “Native.js很多类型没有。用uts可以 https://uniapp.dcloud.net.cn/plugin/uts-plugin.html”  

完整的方法:

 1 function getWallpaper () {
 2    let WallpaperManager = plus.android.importClass("android.app.WallpaperManager"),
 3        Base64 = plus.android.importClass('android.util.Base64'),
 4        Bitmap = plus.android.importClass('android.graphics.Bitmap'),
 5        ByteArrayOutputStream = plus.android.importClass('java.io.ByteArrayOutputStream');
 6           
 7    let Main = plus.android.runtimeMainActivity();
 8    let wallpaperManager = WallpaperManager.getInstance(Main);
 9    let Drawable = wallpaperManager.getDrawable();
10         
11    let bimp = plus.android.invoke(Drawable,"getBitmap"); 
12    let baos = new ByteArrayOutputStream();
13         
14    bimp.compress(Bitmap.CompressFormat.JPEG, 80, baos);
15    baos.flush();
16    baos.close();
17    let bitmapBytes = baos.toByteArray();
18    let result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
19    let src = 'data:image/jpeg;base64,' + result;
20 }

带注释:

function getWallpaper() {
    // 导入所需的 Android 类
    let WallpaperManager = plus.android.importClass("android.app.WallpaperManager"),
        Base64 = plus.android.importClass('android.util.Base64'),
        Bitmap = plus.android.importClass('android.graphics.Bitmap'),
        ByteArrayOutputStream = plus.android.importClass('java.io.ByteArrayOutputStream');
    
    // 获取当前 Activity
    let Main = plus.android.runtimeMainActivity();
    // 获取壁纸管理器实例
    let wallpaperManager = WallpaperManager.getInstance(Main);
    // 获取当前壁纸的 Drawable
    let Drawable = wallpaperManager.getDrawable();
    
    // 从 Drawable 中获取 Bitmap 对象
    let bimp = plus.android.invoke(Drawable, "getBitmap");
    // 创建一个字节数组输出流
    let baos = new ByteArrayOutputStream();
    
    // 将 Bitmap 压缩为 JPEG 格式,压缩质量为 80%,并写入到字节数组输出流中
    bimp.compress(Bitmap.CompressFormat.JPEG, 80, baos);
    // 刷新输出流
    baos.flush();
    // 关闭输出流
    baos.close();
    // 将输出流中的数据转换为字节数组
    let bitmapBytes = baos.toByteArray();
    // 对字节数组进行 Base64 编码
    let result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
    let src = 'data:image/jpeg;base64,' + result;
}

 

标签:uniapp,桌面壁纸,Base64,plus,importClass,baos,let,android,H5plus
From: https://www.cnblogs.com/MEEBlogs/p/18012601

相关文章

  • uniapp 实践二 uni-id-pages
    导入用到以上的组件。发现没办法弄到分包但是uni-id-pages这个可以弄到分包里面作者的建议:如果改动不大,那么每次更新uni-id-pages时,在HBuilderX的对比界面对比一下就好如果改动较大,建议复制一套前端页面到自己工程的pages目录下,pages.json里只引用根目录pages下的页面,不引......
  • uniapp 实践一
    ┌─uniCloud云空间目录,支付宝小程序云为uniCloud-alipay,阿里云为uniCloud-aliyun,腾讯云为uniCloud-tcb(详见uniCloud)│─components符合vue组件规范的uni-app组件目录│└─comp-a.vue可复用的a组件├─utssdk存放uts文......
  • 小兔鲜儿 uniapp - 首页模块 请求封装2月摸鱼计划04
    小兔鲜儿-首页模块涉及知识点:组件通信、组件自动导入、数据渲染、触底分页加载、下拉刷新等。自定义导航栏参考效果:自定义导航栏的样式需要适配不同的机型。操作步骤准备组件隐藏默认导航栏,修改文字颜色样式适配->安全区域静态结构新建业务组件:src/pages/index/componets/Custo......
  • Java微服务SpringCloud+Uniapp+Vue3+Element Plus开源BizSpring商城
    产品介绍BizSpring电商平台概述BizSpring电商平台,是基于最新SpringCloud微服务架构开发的多语言电商平台,使用领先的Vue3.0+ElementPlus+uniapp技术开发的移动全端业务、实现了多平台同步构建及建设的解决方案。应用发布基于Uni-app,实现跨多个平台(H5、公众号、头条、抖音......
  • 小兔鲜儿 uniapp - uni.request 请求封装 2月摸鱼计划03
    uni.request请求封装添加请求和上传文件拦截器uniapp拦截器:uni.addInterceptor接口说明:接口文档实现步骤基础地址超时时间请求头标识添加token参考代码//src/utils/http.tsconsthttpInterceptor={//拦截前触发invoke(options:UniApp.RequestOptions){//1.......
  • uniapp 选择城市 根据城市首字母分类排序
     selectCity.vue<template><viewclass="select-city"><viewclass="search"><van-fieldclass="select-input"input-align="left":value="searchVal"placeholder=&......
  • uniapp sqlite方法封装
    vardbName='xxx'//数据库名称vardbPath='_doc/xxx.db'//数据库地址,推荐以下划线为开头_doc/xxx.db//判断数据库是否打开constisOpen=(plus:any)=>{//数据库打开了就返回true,否则返回falsevaropen=plus.sqlite.isOpenDatabase({name:......
  • uniapp在H5中排除底部和顶部导航栏
    在app和小程序中,uniapp的100vh不会将底部和顶部导航栏的高度放进去,所以100vh就是整个中间内容的高度,但是在H5中100vh是把顶部和底部导航栏一起放进去的高度,所以为了要在顶部和顶部导航栏排除在H5应用中,需要在内容的高度里设置一下,减去顶部和底部的导航栏高度,为此在uniapp中使用了-......
  • uniapp ArrayBuffer转16进度字符串 以及 十六进制转ASCII码
    1.ArrayBuffer转16进度字符串//ArrayBuffer转16进度字符串示例//ab2hex(buffer){//consthexArr=Array.prototype.map.call(//newUint8Array(buffer),//function(bit){//......
  • uniapp左滑删除
    在本页面引入组件并使用在需要左滑删除的地方使用<viewv-for="(item,index)incsListArrl":key="index":data-index="index"><delSlideLeft:item="item":data_transit="{index:index,item:item}"@delItem="......