我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android如何设置默认锁屏壁纸接口

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android如何设置默认锁屏壁纸接口

本篇内容主要讲解“Android如何设置默认锁屏壁纸接口”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android如何设置默认锁屏壁纸接口”吧!

完成自定义service后,接下来就是具体实现接口

在frameworks/base/core/java/android/app/customized/ICustomizedService.aidl中定义接口

boolean setLockScreenWallpaper(String uri);

在frameworks/base/core/java/android/app/customized/CustomizedManager.java中实现接口

package android.app.customized; import android.util.Log;import android.content.Context;import android.content.Intent;import android.os.Binder;import android.os.RemoteException;import android.provider.Settings;import java.io.IOException;import android.os.ServiceManager;import android.os.IBinder;import java.util.List;import android.app.ActivityManager;import android.graphics.Bitmap;  public class CustomizedManager{    private static final String TAG="CustomizedManager";    private static final boolean DBG=true;        private static ICustomizedService mService;    private final Context mContext;      public CustomizedManager(Context context){        mContext = context;        mService = ICustomizedService.Stub.asInterface(                ServiceManager.getService("customized"));    }    private static ICustomizedService getService(){        if (mService != null) {            return mService;        }                IBinder b = ServiceManager.getService("customized"        mService = ICustomizedService.Stub.asInterface(b);        return mService;    }    public boolean setLockScreenWallpaper(String uri) {        try {            getService().setLockScreenWallpaper(uri);        } catch (RemoteException e) {        }        return false;    } }

在frameworks/base/services/core/java/com/android/server/customized/CustomizedService.java中对AIDL文件中定义的接口进行具体实现.

package com.android.server.customized; import android.os.IBinder;import android.os.ServiceManager;import android.content.Context;import android.content.Intent;import android.os.Binder;import android.app.customized.ICustomizedService;import android.content.BroadcastReceiver;import android.view.IWindowManager;import android.view.WindowManagerGlobal;import android.graphics.BitmapFactory;  public class CustomizedService extends ICustomizedService.Stub {    private static final String TAG = "CustomizedService ";    private Context mContext;     public static class Lifecycle extends SystemService {        private CustomizedService mService;        public Lifecycle(Context context) {            super(context);        }         @Override        public void onStart() {            mService = new CustomizedService (getContext());            publishBinderService(Context.CUSTOMIZED, mService);        }        @Override        public void onBootPhase(int phase) {        }         @Override        public void onUnlockUser(int userHandle) {        }    }     public CustomizedService (Context context) {       mContext = context;   }     public boolean setLockScreenWallpaper(String uri) {        if (uri == null || "".equals(uri))            return false;        File file = new File(uri);        if (!file.exists()) {            return false;        }        Log.d(TAG, "setLockScreenWallpaper uri===============" + uri);        long ident = Binder.clearCallingIdentity();        Intent sendlock = new Intent();        String packageName = "com.android.launcher3";        String serviceClassName = packageName + ".LockScreenWallPaperService";        sendlock.putExtra("path", uri);        sendlock.setComponent(new ComponentName(packageName, serviceClassName));        mContext.startServiceAsUser(sendlock, UserHandle.OWNER);        Binder.restoreCallingIdentity(ident);        return true;    }  }

在packages/apps/Launcher3/AndroidManifest.xml中注册LockScreenWallPaperService

<service            android:name="com.android.launcher3.LockScreenWallPaperService"            android:exported="true" >            <intent-filter>                <action android:name="com.android.launcher.action.SET_LOCKSCREENWALLPAPER_SERVICE" />            </intent-filter></service>

因为我们只是在CustomizedService 中调用setLockScreenWallpaper方法启动LockScreenWallPaperService,所以设置默认wallpaper还是要由setLockScreenWallpaper实现的.下面要实现LockScreenWallPaperService了,路径为packages/apps/Launcher3/class="lazy" data-src/com/android/launcher3/LockScreenWallPaperService.java

package com.android.launcher3; import android.app.Service;import android.os.*;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.content.Context;import android.content.Intent;import android.graphics.Matrix;import android.util.Log;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException; public class LockScreenWallPaperService extends Service {    private String TAG = "LockScreenWallPaperService";    private String path = "";     @Override    public void onCreate() {     }     @Override    public int onStartCommand(Intent intent, int flags, int startId) {        Log.d(TAG, "onStartCommand ");         if (intent != null) {            path = intent.getStringExtra("path");        }         Bitmap bitmap = BitmapFactory.decodeFile(path);        SavePicToLocal savePic = new SavePicToLocal(bitmap);        savePic.execute("save picture");         return START_STICKY;    }     public boolean dumpBitmap(Bitmap mBitmap) throws FileNotFoundException {        Log.d(TAG, "dumpBitmap");        boolean flagSaveCompelete = false;        Bitmap bitmap_land, bitmap_port;        int height = mBitmap.getHeight();        int width = mBitmap.getWidth();         int lswidth = 1920;        int lsheight = 1200;        float lper = Math.max((float) lswidth / (float) width, (float) lsheight                / (float) height);        if (lper > 1) {            Matrix lmatrix = new Matrix();            lmatrix.postScale(lper, lper);            bitmap_land = Bitmap.createBitmap(mBitmap,                    (int) ((mBitmap.getWidth() - lswidth / lper) / 2),                    (int) ((mBitmap.getHeight() - lsheight / lper) / 2),                    (int) (lswidth / lper), (int) (lsheight / lper), lmatrix,                    true);        } else {            bitmap_land = Bitmap.createBitmap(mBitmap,                    (int) ((mBitmap.getWidth() - lswidth) / 2),                    (int) ((mBitmap.getHeight() - lsheight) / 2), lswidth,                    lsheight, null, true);        }         int pswidth = 1200;        int psheight = 1920;        float pper = Math.max((float) pswidth / (float) width, (float) psheight                / (float) height);        if (pper > 1) {            Matrix pmatrix = new Matrix();            pmatrix.postScale(pper, pper);            bitmap_port = Bitmap.createBitmap(mBitmap,                    (int) ((mBitmap.getWidth() - pswidth / pper) / 2),                    (int) ((mBitmap.getHeight() - psheight / pper) / 2),                    (int) (pswidth / pper), (int) (psheight / pper), pmatrix,                    true);        } else {            bitmap_port = Bitmap.createBitmap(mBitmap,                    (int) ((mBitmap.getWidth() - pswidth) / 2),                    (int) ((mBitmap.getHeight() - psheight) / 2), pswidth,                    psheight, null, true);        }        Matrix matrix = new Matrix();        matrix.postScale(0.5f, 0.5f);        bitmap_land = Bitmap.createBitmap(bitmap_land, 0, 0,                bitmap_land.getWidth(), bitmap_land.getHeight(), matrix, true);        bitmap_port = Bitmap.createBitmap(bitmap_port, 0, 0,                bitmap_port.getWidth(), bitmap_port.getHeight(), matrix, true);        flagSaveCompelete = saveBitmapToFile(                bitmap_port,                "/data/local/tmp/lockscreenwallpaper/keyguard_wallpaper_land.png",                1);        flagSaveCompelete = saveBitmapToFile(                bitmap_land,                "/data/local/tmp/lockscreenwallpaper/keyguard_wallpaper_port.png",                2);        return flagSaveCompelete;    }     private boolean saveBitmapToFile(Bitmap bitmap, String path, int isRecycle)            throws FileNotFoundException {         Log.d(TAG, "saveBitmapToFile ident=" + "bitmap" + bitmap);        boolean result = false;        if (bitmap == null)            return result;        Bitmap tmpbm = null;        java.io.FileOutputStream tmpfos = null;        try {            tmpbm = bitmap;            tmpfos = new java.io.FileOutputStream(path);            tmpbm.compress(Bitmap.CompressFormat.PNG, 100, tmpfos);            Log.d(TAG, "saveBitmapToFile compress");        } catch (FileNotFoundException ex) {            Log.d(TAG, "ex1" + ex);            throw ex;        } catch (java.io.IOException ex) {            Log.d(TAG, "ex2" + ex);            ex.printStackTrace();        } finally {            if (tmpfos != null) {                try {                    Log.d(TAG, "tmpfos.close() ");                    tmpfos.close();                    result = true;                } catch (java.io.IOException ex) {                    Log.d(TAG, "ex3" + ex);                }            }            if (tmpbm != null && !tmpbm.isRecycled())                if (isRecycle == 2) {                    tmpbm.recycle();                }        }         return result;    }     class SavePicToLocal extends AsyncTask<String, Integer, Boolean> {        Bitmap bitmap;                public SavePicToLocal(Bitmap mBitmap) {            bitmap = mBitmap;        }         @Override        protected Boolean doInBackground(String... params) {            return dumpBitmaps();        }         private boolean dumpBitmaps() {            boolean flag = false;            try {                flag = dumpBitmap(bitmap);                flag = true;            } catch (FileNotFoundException e) {            }            return flag;        }        @Override        protected void onPostExecute(Boolean result) {            if (result) {                sendBroadcast(new Intent(                        "android.intent.action.UPDATE_LOCK_WALLPAPER"));                Log.d(TAG, "send UPDATE_LOCK_WALLPAPER");            }         }         @Override        protected void onProgressUpdate(Integer... values) {            super.onProgressUpdate(values);        }    }     @Override    public IBinder onBind(Intent intent) {        return null;    } }

然后编译一下,就可以通过接口设置默认桌面了,大功告成

到此,相信大家对“Android如何设置默认锁屏壁纸接口”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android如何设置默认锁屏壁纸接口

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android如何设置默认锁屏壁纸接口

本篇内容主要讲解“Android如何设置默认锁屏壁纸接口”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android如何设置默认锁屏壁纸接口”吧!完成自定义service后,接下来就是具体实现接
2023-06-26

win10如何设置锁屏壁纸

今天小编给大家分享一下win10如何设置锁屏壁纸的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。win10设置锁屏壁纸的方法方
2023-07-01

windows10锁屏壁纸如何设置

windows10手机锁屏壁纸如何设置呢,许多消费者喜爱各种各样有意思的手机锁屏壁纸,因而这儿告诉大家有关windows10手机锁屏壁纸设定方式简介的具体内容,客户根据设置菜单开启人性化,然后就能够寻找锁屏界面的具体内容,根据改动对焦就可以
2023-07-16

wallpaper engine如何设置锁屏壁纸

今天小编给大家分享一下wallpaper engine如何设置锁屏壁纸的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。wall
2023-07-02

win10锁屏壁纸自动换如何设置

这篇文章主要介绍“win10锁屏壁纸自动换如何设置”,在日常操作中,相信很多人在win10锁屏壁纸自动换如何设置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win10锁屏壁纸自动换如何设置”的疑惑有所帮助!
2023-07-01

Windows10如何设置锁屏壁纸换个清新或个性突出的壁纸

看到别人电脑桌面的壁纸要么小清新,要么很大气,你是不是也很羡慕,在Win10之前的系统中,更换桌面壁纸是一件很容易的事,但是Win10预览版中的一些设置有改变,因此有些用户不知道该如何设置自己的桌面壁纸,其实也是不难的,现在就一起来看看吧。
2023-06-09

win8系统如何修改锁屏壁纸 win8系统自动更换锁屏壁纸的设置教程

修改锁屏壁纸: 1、在Win8开始屏幕或者桌面界面上,将鼠标移动到桌面最右侧右下角,即可看到“设置”入口;2、进入Win8个性设置界面,如下图,可以直接点击右边的图片更换Win8锁屏壁纸,如果Win8内部自带的壁纸不
2022-06-04

Windows10系统内置的锁屏壁纸如何提取

有很多网友喜欢Win10内置的锁屏壁纸,觉得很好看,想将它们提取出来保存。那么js大家知道php这些壁纸的路径在哪里吗?该如何将它们提取出来呢?今天小编给大家带来相关提取内置锁屏壁纸教程,希望能够帮助到大家yzVNMvW,下面就请大家跟小编
2023-06-14

笔记本电脑如何设置纯色壁纸和屏保

小编给大家分享一下笔记本电脑如何设置纯色壁纸和屏保,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.在桌面右键选择“个性化(R)”点击打开。 2.在打开的个性化界面中,找到“桌面背景”点击打开。 3.点击选择桌面背景下的图
2023-06-28

win8或win8.1如何禁用锁屏壁纸直接进入登录界面

使用win8或win8.1系统的用户都知道,在系统开机后会出现一张锁屏壁纸,很是麻烦,不能直接开机就到登录界面,要想达到这样的效果,要么使用第三方软件,要么更改系统注册表,所以这里就教教大家不用第三方软件如何来达到这目的。方法一:使用注册表
2023-06-05

android studio如何恢复默认设置

要恢复Android Studio的默认设置,可以按照以下步骤操作:1. 打开Android Studio。2. 在顶部菜单栏中,选择"File"(文件)。3. 在下拉菜单中,选择"Manage IDE Settings"(管理IDE设置)
2023-09-27

android 如何设置开机后屏幕亮度默认值为自动调节

在第一次开机后,设置>显示>自动亮度调节 默认是勾选上的。 修改 alps\frameworks\base\packages\SettingsProvider\res\values\defaults.xml 内的 2022-06-06

MySQL默认连接超时时间如何设置

MySQL的连接超时时间是由参数wait_timeout控制的,该参数的默认值是28800秒(8小时)。要设置MySQL的连接超时时间,可以使用以下方法之一:通过MySQL配置文件(my.cnf或my.ini)进行设置:打开MySQL配置
2023-10-24

电脑如何设置开机默认开启小键盘锁

小编给大家分享一下电脑如何设置开机默认开启小键盘锁,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、按“WIN键+R键”组合快捷键,打开运行窗口,输入“reged
2023-06-28

Android中如何设置TextView的字体默认大小

本篇文章为大家展示了Android中如何设置TextView的字体默认大小,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。对于设置TextView的字体默认大小对于UI界面的好看程度是很重要的,小屏幕
2023-05-31

Win7如何设置窗口文本背景颜色默认是白色

在Win7系统中,所有文本的背景颜色默认都是白色的,那能不能设置成我们自己喜爱的颜色呢?当然是可以js的,下面就和小编一起看看设置的方法吧。方法如下:1、首先我们python在桌面任意处单击鼠标右键,选择个性化;2、然后选择窗口颜色 ;3、
2023-06-14

电脑一直弹出“已重置应用默认设置”窗口如何解决

本篇内容介绍了“电脑一直弹出“已重置应用默认设置”窗口如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!解决一直弹出“已重置应用默认设置
2023-06-27

android如何设置小区广播默认信道(50与60并支持双卡)

要求设置默认信道50与60,并支持双卡。 在PhoneApp.java文件中增加code: 在文件开头部分import 包: 代码如下: import android.provider.Telephony; import com.andr
2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录