VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 网站开发 > JavaScript >
  • uniapp/H5 获取手机桌面壁纸 (静态壁纸)

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

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;
}
复制代码

出处:https://www.cnblogs.com/MEEBlogs/p/18012601


相关教程