Android保活⽅法之应⽤壁纸设置
1、看到我的标题,不要太惊讶,不做过多解释,其实就是⽤App给⼿机设置⼀个壁纸,以提升当前应⽤的进程等级,这个时候基本应⽤关闭了,
进程还是在的。
2、直接上代码
⼀、设置壁纸⽤啥呢?就⽤WallpaperService具体⼲嘛的,⾃⼰去查查吧
publicclassLiveWallpaperServiceextendsWallpaperService{
privatestaticfinalStringTAG="LiveWallpaperService";
privateintmIndex=0;
@Override
publicEngineonCreateEngine(){
returnnewWallpaperEngine(this);
}
publicclassWallpaperEngineextendsEngine{
privateMediaPlayermediaPlayer=null;
privateContextcontext;
publicWallpaperEngine(LiveWallpaperServiceliveWallpaperService){
t路飞壁纸 =liveWallpaperService;
}
@Override
publicvoidonSurfaceCreated(SurfaceHolderholder){
aceCreated(holde生机勃勃什么意思 r);
mIndex++;
}
publicvoidshowWall(){
try{
Canvascanvas=getSurfaceHolder().lockCanvas();
if(canvas==null)
return;
Bitmapbitmap=creatBitamp();
if(bitmap!=null){
tmap(bitmap,0.0F,0.0F,newPaint());
}el{
lor();
}
getSurfaceHolder().unlockCanvasAndPost(canvas);
return;
}catch(Exceptionexception){
return;
}
}
publicBitmapcreatBitamp(){
Bitmapbitmap=null;
//获取壁纸管理器
//获取壁纸
if(_INT>=N_CODES.N){
try{
if(mIndex<=1&&!isLiveWallpaperRunning(context,getPackageName())){
DrawableshowDrawable=getResources().getDrawable(_pager_img);
if(showDrawable==null){
returnnull;
}
bitmap=drawableToBitmap(showDraw砥砺前行近义词 able);
bitmap=ScaledBitmap(bitmap,
eenSize(context)[0],
eenSize(context)[1],true);
}el{
WallpaperManagerwallpaperManager=tance(getApplicationContext());
DrawablewallpaperDrawable=wable();
bitmap=drawableToBitmap(wallpaperDrawable);
}
}catch(Exceptione){
tackTrace();
}
}
returnbitmap;
}
/**
*Drawable转换成⼀个Bitmap
*
*@paramdrawabledrawable精美头像图片大全 对象
*@return
*/
publicBitmapdrawableToBitmap(Drawabledrawable){
Bitmapb音乐会英语怎么读 itmap=Bitmap(rinsicWidth(),rinsicHeight(),
city()!=?_8888:_565);
Canvascanvas=newCanvas(bitmap);
nds(0,0,rinsicWidth(),
rinsicHeight());
(canvas);
returnbitmap;
}
@Override
publicvoidonSurfaceDestroyed(SurfaceHolderholder){
aceDestroyed(holder);
}
@Override
publicvoidonDestroy(){
Log.i("⽅法⽅法付","onDestroy()");
if(mediaPlayer!=null){
();
e();
mediaPlayer=null;
}
roy();
}
@Override
publicvoidonVisibilityChanged(booleanvisible){
bilityChanged(visible);
if(visible){
showWall();
}
}
}
//这个是⽤来判断当前App设置的壁纸是否还在活着,(可能会被其他App替换,这样就会导致保活失效)
publicstaticbooleanisLiveWallpaperRunning(Contextcontext,StringtagetPackageName){
//得到壁纸管理器
WallpaperManagerwallpaperManager=tance(context);
//如果系统使⽤的壁纸是动态壁纸话则返回该动态壁纸的信息,否则会返回null
//如果系统使⽤的壁纸是动态壁纸话则返回该动态壁纸的信息,否则会返回null
Wallp雅思听力时间 aperInfowallpaperInfo=lpaperInfo();
if(wallpaperInfo!=null){
//如果是动态壁纸,则得到该动态壁纸的包名,并与想知道的动几月是夏天 态壁纸包名做⽐较
StringcurrentLiveWallpaperPackageName=kageName();
if((tagetPackageName)){
returntrue;
}
}
returnfal;
}
}
上⾯就⼀个外部class类,ScreenUtils是⽤来设置bitmap的宽⾼的,因为设置壁纸,肯定要把图设置的和⼿机屏幕宽⾼⼀样,所以他就是或者
屏幕宽⾼的,代码就不贴合出来了,⾃⼰写吧洛威拿 ,这种代码多的很。
⼆、第⼆部就是在你的闪屏也,每次进来的时候判断,⽤上⾯的最后⼀个⽅法就可以判断当前App设置的壁纸是否还在,不在的话,为了保活效
果,需要在设置⼀次。在的就直接进⼊App
App如果进⼊设置壁纸页⾯后,需要闪屏页重七英语怎么写 写onActivityResult⽅法,可以通过判断壁纸是否设置完成。剩下的就不⽤管了。完成了。
接下来的就是你想要保活所要的事情了,接收推送?还是固定时间做什么事,等等,你还可以在进⼊应⽤开启⼀个rvice,这个rvice会告诉你
你的应⽤是否还在活着,因为现在rvice都必须设置为前台可见的rvice通知,所以能看到。具体想⼲什么,就去做吧......
三、当前这个设置壁纸的rvice是需要在在清单⽂件中注册的,怎么写呢?
先写⼀个xml:live税收筹划的意义 _wall_
android:thumbnail="@mipmap/ic_launcher"/>
xml就上⾯那点东西就⾏啦
然后注册壁纸
android:name=".llpaperService"
android:label="@string/app_name"
android:permission="_WALLPAPER">
android:name="per"
android:resource="@xml/live_wall_paper"/>
好了,这才结束吗!快去试试吧!
作为android开发是喜欢,作为⽤户吗,我讨厌做这个事的⼈,不喜欢后天⼀直运⾏App,会让⼿机耗电快,卡,,,,,
本文发布于:2023-03-25 23:14:35,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1679757277387205.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:手机主屏幕壁纸.doc
本文 PDF 下载地址:手机主屏幕壁纸.pdf
留言与评论(共有 0 条评论) |