android動(dòng)態(tài)壁紙調(diào)用的簡(jiǎn)單實(shí)例
調(diào)用后動(dòng)態(tài)壁紙其實(shí)是顯示在Activity的后面,而Activity則是透明顯示,這樣就可以看到下面的動(dòng)態(tài)壁紙,如果Activity不是透明的則什么也看不到。
代碼中有用到兩個(gè)接口
IWallpaperService mService;
IWallpaperEngine mEngine;
我們可以看到該目錄下面有三個(gè)aidl接口,分別是
interface IWallpaperConnection {
void attachEngine(IWallpaperEngine engine);
ParcelFileDescriptor setWallpaper(String name);
}
oneway interface IWallpaperService {
void attach(IWallpaperConnection connection,
IBinder windowToken, int windowType, boolean isPreview,
int reqWidth, int reqHeight);
}
oneway interface IWallpaperEngine {
void setDesiredSize(int width, int height);
void setVisibility(boolean visible);
void dispatchPointer(in MotionEvent event);
void dispatchWallpaperCommand(String action, int x, int y, int z, in Bundle extras);
void destroy();
}
定義壁紙管理和壁紙信息變量
private WallpaperManager mWallpaperManager = null;
private WallpaperInfo mWallpaperInfo = null;
private WallpaperConnection mWallpaperConnection = null;
private Intent mWallpaperIntent;
初始化這些變量
mWallpaperManager = WallpaperManager.getInstance(this);
mWallpaperInfo = mWallpaperManager.getWallpaperInfo();//如果返回null則說明當(dāng)前不是動(dòng)態(tài)壁紙
mWallpaperIntent = new Intent(WallpaperService.SERVICE_INTERFACE);
mWallpaperIntent.setClassName(mWallpaperInfo.getPackageName(), mWallpaperInfo.getServiceName());
綁定動(dòng)態(tài)壁紙服務(wù)
bindService(mIntent, this, Context.BIND_AUTO_CREATE);
IWallpaperService mService;//這里有一個(gè)adil接口
在連接監(jiān)聽中試著attach
public void onServiceConnected(ComponentName name, IBinder service) {
mService = IWallpaperService.Stub.asInterface(service);
try {
mService.attach(this, view.getWindowToken(),
// WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA_OVERLAY,
WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA,
true, root.getWidth(), root.getHeight());
} catch (RemoteException e) {
Log.w("", "Failed attaching wallpaper; clearing", e);
}
}
在bindService的時(shí)候發(fā)現(xiàn)總是失敗,后來發(fā)現(xiàn)是權(quán)限問題,只有擁有系統(tǒng)權(quán)限的apk才可以使用WallpaperService.SERVICE_INTERFACE服務(wù),所以問題就變成了怎么獲取系統(tǒng)權(quán)限。
- Android開發(fā)學(xué)習(xí)之WallPaper設(shè)置壁紙?jiān)敿?xì)介紹與實(shí)例
- Android編程之動(dòng)態(tài)壁紙實(shí)例分析
- Android自定義動(dòng)態(tài)壁紙開發(fā)詳解
- Android自定義動(dòng)態(tài)壁紙開發(fā)(時(shí)鐘)
- Android動(dòng)態(tài)時(shí)鐘壁紙開發(fā)
- Android仿主流壁紙App設(shè)置界面
- 設(shè)置Android系統(tǒng)永不鎖屏永不休眠的方法
- Android編程實(shí)現(xiàn)一鍵鎖屏的方法
- Android設(shè)置默認(rèn)鎖屏壁紙接口的方法
相關(guān)文章
Android編程判斷網(wǎng)絡(luò)是否可用及調(diào)用系統(tǒng)設(shè)置項(xiàng)的方法
這篇文章主要介紹了Android編程判斷網(wǎng)絡(luò)是否可用及調(diào)用系統(tǒng)設(shè)置項(xiàng)的方法,涉及Android針對(duì)網(wǎng)絡(luò)連接的判定及屬性設(shè)置的調(diào)用,需要的朋友可以參考下2016-03-03詳解如何使用VisualStudio高效開發(fā)調(diào)試AndroidNDK
這篇文章主要介紹了詳解如何使用VisualStudio高效開發(fā)調(diào)試AndroidNDK,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12Android手機(jī)聯(lián)系人帶字母索引的快速查找
這篇文章主要為大家詳細(xì)介紹了Android手機(jī)聯(lián)系人帶字母索引的快速查找實(shí)現(xiàn)方法,感興趣的小伙伴們可以參考一下2016-03-03

Android編程實(shí)現(xiàn)長(zhǎng)按彈出選項(xiàng)框View進(jìn)行操作的方法

Android CountDownTimer案例總結(jié)

利用Android 防止系統(tǒng)字體變化、顯示大小變化影響

android使用gesturedetector手勢(shì)識(shí)別示例分享

自定義TextView跑馬燈效果可控制啟動(dòng)/停止/速度/焦點(diǎn)