源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

android动态壁纸调用的简单实例

  • 时间:2021-04-02 05:46 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:android动态壁纸调用的简单实例
调用后动态壁纸其实是显示在Activity的后面,而Activity则是透明显示,这样就可以看到下面的动态壁纸,如果Activity不是透明的则什么也看不到。 代码中有用到两个接口 IWallpaperService mService; IWallpaperEngine mEngine; 我们可以看到该目录下面有三个aidl接口,分别是
[u]复制代码[/u] 代码如下:
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(); }
定义壁纸管理和壁纸信息变量
[u]复制代码[/u] 代码如下:
private WallpaperManager mWallpaperManager = null; private WallpaperInfo mWallpaperInfo = null; private WallpaperConnection mWallpaperConnection = null; private Intent mWallpaperIntent;
初始化这些变量
[u]复制代码[/u] 代码如下:
mWallpaperManager = WallpaperManager.getInstance(this); mWallpaperInfo = mWallpaperManager.getWallpaperInfo();//如果返回null则说明当前不是动态壁纸 mWallpaperIntent = new Intent(WallpaperService.SERVICE_INTERFACE); mWallpaperIntent.setClassName(mWallpaperInfo.getPackageName(), mWallpaperInfo.getServiceName());
绑定动态壁纸服务
[u]复制代码[/u] 代码如下:
bindService(mIntent, this, Context.BIND_AUTO_CREATE); IWallpaperService mService;//这里有一个adil接口
在连接监听中试着attach
[u]复制代码[/u] 代码如下:
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的时候发现总是失败,后来发现是权限问题,只有拥有系统权限的apk才可以使用WallpaperService.SERVICE_INTERFACE服务,所以问题就变成了怎么获取系统权限。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部