安卓一键换壁纸

360手机有一个很赞的应用,没有界面,点击一下图标换一张壁纸,其他手机都没有看到这个功能。

vivo倒是有亮屏换锁屏壁纸。

1.无界面应用

https://blog.51cto.com/u_16213305/8503774

AndroidManifest.xml

主题改为不显示

<activity android:name=".MainActivity"android:theme="@android:style/Theme.NoDisplay">

安卓高版本报错:did not call finish() prior to onResume() completing

改成透明主题

<activity android:name=".MainActivity"android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">

2.壁纸API

Bing每日壁纸: http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1

3.下载壁纸

Android HttpURLConnection下载网络图片设置系统壁纸_Android_脚本之家

URL httpUrl = new URL(imgUrl);
HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
conn.setReadTimeout(5000);
conn.setRequestMethod("GET");
conn.setDoInput(true);
InputStream IS = conn.getInputStream();

4.数据转换为Bitmap

Bitmap bitmap = BitmapFactory.decodeStream(IS);

5.设置壁纸

10.9 WallpaperManager(壁纸管理器) · W3School 菜鸟笔记 Android 基础入门教程 · 看云

https://www.cnblogs.com/android-deli/p/10116723.html

<uses-permission android:name="android.permission.SET_WALLPAPER"/> 
WallpaperManager WM = WallpaperManager.getInstance(this);
WM.setBitmap(bitmap);

问题

1.Cleartext HTTP traffic to xxx not permitted

AndroidManifest.xml

<application....android:usesCleartextTraffic="true">

2.NetworkOnMainThreadException

网络进程要写在 new Thread 里。

3.锁屏和桌面同时改变

好像高版本安卓底层代码是这样设置的,而且锁屏亮屏自动切换壁纸会被关掉。

主要代码

MainActivity.java

package com.hty.wallpaper;import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.WallpaperManager;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.Toast;import org.json.JSONObject;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);new Thread(api).start();}Thread api = new Thread() {@Overridepublic void run() {String surl = "http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1";String s = Utils.getURLResponse(surl);try {JSONObject JO = new JSONObject(s);surl = "http://www.bing.com" + JO.getJSONArray("images").getJSONObject(0).getString("url");Log.e(Thread.currentThread().getStackTrace()[2] + "", surl);Bitmap bitmap = Utils.getBitmap(surl);Message message = new Message();message.what = 0;Bundle bundle = new Bundle();bundle.putParcelable("bitmap", bitmap);message.setData(bundle);handler.sendMessage(message);} catch (Exception e) {Log.e(Thread.currentThread().getStackTrace()[2] + "", e.toString());String sm =  e.toString();Message message = new Message();message.what = 1;message.obj = sm;handler.sendMessage(message);}}};@SuppressLint("HandlerLeak")Handler handler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case 0:Bitmap bitmap = msg.getData().getParcelable("bitmap");WallpaperManager WM = WallpaperManager.getInstance(MainActivity.this);try {WM.setBitmap(bitmap);} catch (Exception e) {Log.e(Thread.currentThread().getStackTrace()[2] + "", e.toString());}finish();break;case 1:String s = (String) msg.obj;Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();break;}}};}

Utils.java

package com.hty.wallpaper;import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;public class Utils {static String getURLResponse(String surl) {HttpURLConnection connection = null;InputStream IS = null;String resultData = "";try {URL url = new URL(surl);connection = (HttpURLConnection) url.openConnection();//connection.setDoInput(true);//connection.setUseCaches(false);connection.setRequestMethod("GET");IS = connection.getInputStream();InputStreamReader ISR = new InputStreamReader(IS, StandardCharsets.UTF_8);BufferedReader BR = new BufferedReader(ISR);String inputLine;while ((inputLine = BR.readLine()) != null) {resultData += inputLine;}} catch (Exception e) {Log.e(Thread.currentThread().getStackTrace()[2] + "", e.toString());} finally {if (IS != null) {try {IS.close();} catch (Exception e) {Log.e(Thread.currentThread().getStackTrace()[2] + "", e.toString());}}if (connection != null) {connection.disconnect();}}return resultData;}//https://blog.csdn.net/wu8022/article/details/10310527static Bitmap getBitmap(String imageUrl) {Bitmap bitmap = null;try {URL url = new URL(imageUrl);HttpURLConnection conn = (HttpURLConnection) url.openConnection();InputStream IS = conn.getInputStream();bitmap = BitmapFactory.decodeStream(IS);} catch (Exception e) {Log.e(Thread.currentThread().getStackTrace()[2] + "", e.toString());}return bitmap;}}

完整源码

GitLink | 新一代开源创新服务平台

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宜搜科技死磕港交所上市:从搜索引擎到广告投放,业绩疲态凸显

近日&#xff0c;宜搜科技控股有限公司&#xff08;下称“宜搜科技”&#xff09;向港交所递交招股书&#xff0c;计划在香港主板上市&#xff0c;中银国际为其独家保荐人。 值得注意的是&#xff0c;宜搜科技已在资本市场辗转多年。该公司曾于2014年向纽交所递交上市申请&…

CentOS7编译jsoncpp静态库

1. 官网下载源码 github地址&#xff1a;GitHub - open-source-parsers/jsoncpp at update 2. 编译 Unzip jsoncpp-master.zip Cd jsoncpp-master mkdir -p ./build/debug cd ./build/debug/ cmake -DCMAKE_BUILD_TYPEdebug -DBUILD_SHARED_LIBSOFF -DCMAKE_ARCHIVE_OUTPUT_D…

docker快速搭建部署mqtt

文章目录 前言一、mqtt是什么&#xff1f;二、使用步骤1.引入库2.创建临时容器3.创建挂在目录4.将临时容器的配置挂载到宿主机中5.删除临时容器6.运行容器并挂载文件7.登录EMQX内置的管理控制台 总结 前言 一、mqtt是什么&#xff1f; MQTT&#xff08;Message Queuing Teleme…

Ts类型体操详讲 之 extends infer (下)

目录 1、函数 &#xff08;1&#xff09;提取参数类型 &#xff08;2&#xff09;提取返回值类型 2、构造器 &#xff08;1&#xff09;提取构造器返回值 &#xff08;2&#xff09;提取构造器参数类型 3、索引类型 本章我们继续上节的内容继续&#xff0c;展示我们对ex…

送变电乙级资质从入门到成功申请

1. 初步了解与规划 研究资质标准&#xff1a;首先&#xff0c;详细研究最新的送变电乙级资质标准&#xff0c;包括企业资质条件、人员配置要求、技术设备标准等。企业准备&#xff1a;确保企业具备独立法人资格&#xff0c;注册资本达标&#xff0c;且企业信誉良好。制定计划&…

C++ //练习 13.24 如果本节中的HasPtr版本未定义析构函数,将会发生什么?如果未定义拷贝构造函数,将会发生什么?

C Primer&#xff08;第5版&#xff09; 练习 13.24 练习 13.24 如果本节中的HasPtr版本未定义析构函数&#xff0c;将会发生什么&#xff1f;如果未定义拷贝构造函数&#xff0c;将会发生什么&#xff1f; 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工…

华为OD机试真题-田忌赛马-2024年OD统一考试(C卷D卷)

题目描述: 给定两个只包含数字的数组a,b,调整数组 a 里面数字的顺序,使得尽可能多的 a[i] >b[i]。数组 a和 b 中的数字各不相同。 输出所有可以达到最优结果的 a 数组的数量 输入描述: 输入的第一行是数组 a 中的数字,其中只包含数字,每两个数字之间相隔一个空格,a…

提升你的C编程技能:使用cURL下载Kwai视频

概述 本文将介绍如何利用C语言以及cURL库来实现Kwai视频的下载。cURL作为一个功能强大的网络传输工具&#xff0c;能够在C语言环境下轻松地实现数据的传输。我们还将探讨如何运用代理IP技术&#xff0c;提升爬虫的匿名性和效率&#xff0c;以适应Kwai视频平台的发展趋势。 正…

报告!这里发现了一个赛博炼丹的神级平台!

众所周知&#xff0c;“赛博炼丹”是一个AI开发研究领域古老又神秘的活动&#xff0c;它往往对炼丹平台有很高的要求。如果你也是一路从“炼丹小白”成长到“资深AI算法工程师”&#xff0c;那你一定懂我在说什么&#xff1f;说好了&#xff0c;天台见&#xff01; GpuMall智算…

力扣HOT100 - 108. 将有序数组转换为二叉搜索树

解题思路&#xff1a; 二叉搜索树一般使用中序遍历 class Solution {public TreeNode sortedArrayToBST(int[] nums) {return helper(nums,0,nums.length-1);}public TreeNode helper(int[] nums,int left,int right){if(left>right) return null;//确定根节点//总是选择中…

Vue 3 + TypeScript + Vite 2024年4月最新管理系统基建

Vue 3 TypeScript Vite 2024年4月最新管理系统基建 相关依赖 vue: ^3.4.21vite: ^5.2.0typescript: ^5.2.2eslint: ^9.0.0 1. 初始化项目 1.1 node版本要求 node: v18.17.1 1.2. 创建项目 使用 PNPM: # 创建项目 pnpm create vite vue3-element-template --template …

【缓存服务】⭐️自定义实现一个简易的数据缓存

目录 &#x1f378;前言 &#x1f37b;手写缓存服务 &#xff08;1&#xff09;缓存实体类 &#xff08;2&#xff09;缓存工具类 &#xff08;3&#xff09;测试缓存服务 &#x1f377;已有的缓存工具 &#x1f379;章末 &#x1f378;前言 俗话说 有轮子不用 就是玩 开个…

WebStorm 中调试 (Debug) JavaScript 文件(js)

WebStorm 中调试 (Debug) JavaScript 文件(js) 在 WebStorm 中调试 JavaScript 文件&#xff0c;您可以设置断点&#xff0c;启动调试会话&#xff0c;并使用浏览器中的开发者工具来查看变量和执行流程。以下是详细步骤&#xff1a; 设置断点 打开您的 JavaScript 文件。 在…

使用 vllm 本地部署 Llama3-8b-Instruct

使用 vllm 本地部署 Llama3-8b-Instruct 0. 引言1. 安装 vllm2. 本地部署 Llama3-8b-Instruct 0. 引言 此文章主要介绍使用 vllm 运行 Llama3-8b。 1. 安装 vllm 创建虚拟环境&#xff0c; conda create -n myvllm python3.11 -y conda activate myvllm安装 Ray 和 Vllm&am…

条件生成对抗网络(cGAN)在AI去衣技术中的应用探索

随着深度学习技术的飞速发展&#xff0c;生成对抗网络&#xff08;GAN&#xff09;作为其中的一个重要分支&#xff0c;在图像生成、图像修复等领域展现出了强大的能力。其中&#xff0c;条件生成对抗网络&#xff08;cGAN&#xff09;通过引入条件变量来控制生成模型的输出&am…

Spring SpringBoot(详解)

1. Spring简介 1.1 Spring 核心设计思想 1.1.1 Spring 是什么&#xff1f; Spring 是包含了众多⼯具⽅法的 IoC 容器。Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff0c;它是⼀个开源框架&#xff0c;Spring ⽀持⼴泛的应⽤场景&#xff0c;它…

SIT3088E:3.0V~5.5V 供电,14Mbps 半双工 RS485/RS422 收发器

特点&#xff1a; 3.0V~5.5V 宽电源范围&#xff0c;半双工&#xff1b;  总线端口 ESD 保护能力 HBM 达到 15kV 以上&#xff1b;  总线容错耐压达到15V&#xff1b;  1/8 单位负载&#xff0c;允许最多 256 个器件连接到总线&#xff1b;  驱动器短路输出保护&…

手撕AVL树(map和set底层结构)(1)

troop主页 今日鸡汤&#xff1a;Action may out always bring happiness;but there is no happiness without action. 行动不一定能带来快乐&#xff0c;但不行动一定不行 C之路还很长 手撕AVL树 一 AVL树概念二 模拟实现AVL树2.1 AVL节点的定义 三 插入更新平衡因子&#xff0…

SpringBoot学习之Kafka下载安装和启动【Mac版本】(三十三)

一、配置Java环境变量 在启动Kafka之前,你需要先正确配置好你的Java环境变量。可以在终端输入java -version检查java环境变量是否配置正确,在Mac上如何配置java环境变量,请读者自行网上搜索操作之,此处不赘叙。 二、下载安装Kafka 1、下载Kafka:Apache Kafka,这两个版本…

四川赢涟电子商务有限公司深耕抖音电商服务

在当今数字化、网络化高速发展的时代&#xff0c;电子商务行业异军突起&#xff0c;成为推动经济增长的重要力量。四川赢涟电子商务有限公司凭借其敏锐的市场洞察力和创新精神&#xff0c;专注于抖音电商服务&#xff0c;致力于为广大消费者提供便捷、高效、个性化的购物体验&a…