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

  • uniapp/H5plus 获取手机桌面壁纸 (静态壁纸)已关闭评论
  • 52 次浏览
  • A+
所属分类:Web前端
摘要

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

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

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; }