700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android p动态壁纸 android开发实现动态壁纸

android p动态壁纸 android开发实现动态壁纸

时间:2022-10-16 16:47:26

相关推荐

android p动态壁纸 android开发实现动态壁纸

释放双眼,带上耳机,听听看~!

代码中有用到两个接口

IWallpaperService mService;

IWallpaperEngine mEngine;

我们可以看到该目录下面有三个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则说明当前不是动态壁纸

mWallpaperIntent = new Intent(WallpaperService.SERVICE_INTERFACE);

mWallpaperIntent.setClassName(mWallpaperInfo.getPackageName(), mWallpaperInfo.getServiceName());

绑定动态壁纸服务

复制代码 代码如下:

bindService(mIntent, this, Context.BIND_AUTO_CREATE);

IWallpaperService mService;//这里有一个adil接口

在连接监听中试着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);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。