来自活动的Android动态壁纸

时间:2013-11-13 13:20:37

标签: java android android-activity android-service live-wallpaper

我想要做的是动态壁纸有一些动作(已经完成)但是问题就在那里......我在Activity中做了哪个“动作”是一个扩展视图和活动的类setContentView()方法不是一些布局..这是View。我现在要做的是创建选项将该活动设置为壁纸,但我不知道如何。这是来自主Activity的onCreate()方法,它正在加载View。我希望它成为一个壁纸......那么如何才能将它设置为一个?

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SnowFall snowFallView = new SnowFall(this);
        setContentView(snowFallView);
        snowFallView.setBackgroundDrawable(getResources().getDrawable(
                R.drawable.christmas));

    }

以下是我要创建的示例应用:https://play.google.com/store/apps/details?id=com.chiralcode.wallpaper.autumn&hl=bg

2 个答案:

答案 0 :(得分:4)

您是否将壁纸作为服务实施?获取基础知识 - 查看Lars Vogel关于动态壁纸here

的教程

简而言之,您可以设置壁纸:

Intent intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, new ComponentName(this, MyWallpaperService.class));
startActivity(intent);

您需要将上述内容改编为您的类名,并记住在AndroidManifest中拥有android.permission.BIND_WALLPAPER权限,但请再次阅读他的教程。

答案 1 :(得分:1)

通过活动开始壁纸服务,以下是完美的工作,你也可以在 onclick(...)中加入,如果你启动livewallpaper(你自己的直播壁纸只需点击一下你只需编写以下代码,

        btnInstallWallpaper.setOnClickListener(new OnClickListener() {

        @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
        @SuppressLint("InlinedApi")
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
             Intent intent = new Intent();
            if (android.os.Build.VERSION.SDK_INT >= 16)
            {
                intent.setAction("android.service.wallpaper.CHANGE_LIVE_WALLPAPER");
                intent.putExtra("android.service.wallpaper.extra.LIVE_WALLPAPER_COMPONENT", new ComponentName("com.example.wall", "com.example.wall.WallpaperService"));
            } else

                intent.setAction("android.service.wallpaper.LIVE_WALLPAPER_CHOOSER");
                intent.putExtra("android.service.wallpaper.extra.LIVE_WALLPAPER_COMPONENT", new ComponentName("com.example.wall", "com.example.wall.WallpaperService"));  // package + classname
            //}  
            startActivity(intent);
        }
    });