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則說(shuō)明當(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)聽(tīng)中試著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)總是失敗,后來(lái)發(fā)現(xiàn)是權(quán)限問(wèn)題,只有擁有系統(tǒng)權(quán)限的apk才可以使用WallpaperService.SERVICE_INTERFACE服務(wù),所以問(wèn)題就變成了怎么獲取系統(tǒng)權(quán)限。
- Android開(kāi)發(fā)學(xué)習(xí)之WallPaper設(shè)置壁紙?jiān)敿?xì)介紹與實(shí)例
- Android編程之動(dòng)態(tài)壁紙實(shí)例分析
- Android自定義動(dòng)態(tài)壁紙開(kāi)發(fā)詳解
- Android自定義動(dòng)態(tài)壁紙開(kāi)發(fā)(時(shí)鐘)
- Android動(dòng)態(tài)時(shí)鐘壁紙開(kāi)發(fā)
- Android仿主流壁紙App設(shè)置界面
- 設(shè)置Android系統(tǒng)永不鎖屏永不休眠的方法
- Android編程實(shí)現(xiàn)一鍵鎖屏的方法
- Android設(shè)置默認(rèn)鎖屏壁紙接口的方法
相關(guān)文章
android 通知Notification詳解及實(shí)例代碼
這篇文章主要介紹了android 通知Notification詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-12-12
Android使用libgdx實(shí)現(xiàn)模擬方向鍵控制角色移動(dòng)的方法
這篇文章主要介紹了Android使用libgdx實(shí)現(xiàn)模擬方向鍵控制角色移動(dòng)的方法,實(shí)例分析了Android中使用libgdx框架實(shí)現(xiàn)響應(yīng)方向鍵的技巧,適用于Android游戲開(kāi)發(fā)領(lǐng)域,需要的朋友可以參考下2015-12-12
Android:“萬(wàn)能”Activity重構(gòu)篇
本文主要介紹了mvp以及每一層,以及使用mvp來(lái)重構(gòu)“萬(wàn)能”Activity,其實(shí)每一層需要注意的東西還有很多,比如model層是最難寫(xiě)的一層。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01
Android實(shí)現(xiàn)ListView控件的多選和全選功能實(shí)例
這篇文章主要介紹了Android實(shí)現(xiàn)ListView控件的多選和全選功能,結(jié)合實(shí)例形式分析了ListView控件多選及全選功能的布局與功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07
Android編程實(shí)現(xiàn)獲取所有傳感器數(shù)據(jù)的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)獲取所有傳感器數(shù)據(jù)的方法,涉及Android針對(duì)傳感器Sensor相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
Android EditText實(shí)現(xiàn)輸入表情
editText是TextView的子類(lèi),TextView能用的工具EditText都能用,接下來(lái)通過(guò)實(shí)例代碼給大家分享Android EditText實(shí)現(xiàn)輸入表情功能,感興趣的朋友一起看看吧2017-08-08

