0

私はアンドロイド開発の初心者です。そして、ライブ壁紙の開発を試みていました。コードはエラーなしで完了しました..しかし、その後、ライブ壁紙は私のavdのライブ壁紙のリストに表示されません

これが私のマニフェストです

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ani.trial.lwp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7" />
    <uses-feature android:name="android.software.live_wallpaper"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <service 
           android:name="ani.trial.lwp.mainservice"
           android:label="Trial"
           android:permission="android.permission.BIND_WALLPAPER">
           <intent-filter >
               <action android:name="android.service.wallpaper.WallpaperService"/>
           </intent-filter>
               <meta-data android:name="android.service.wallpaper"
                   android:resource="@xml/layout"/>
       </service>
    </application>

</manifest>

そして私のメインのJavaコード-

package ani.trial.lwp;
import android.graphics.Canvas;
import android.graphics.Color;
import android.os.Handler;
import android.service.wallpaper.WallpaperService;
import android.view.SurfaceHolder;

public class mainservice extends WallpaperService {

    private final Handler mHandler = new Handler();

    @Override
    public Engine onCreateEngine() {
        // TODO Auto-generated method stub
        return new RenderEngine();
    }

      @Override
        public void onCreate() {
            super.onCreate();
        }

        @Override
        public void onDestroy() {
            super.onDestroy();
        }



                class RenderEngine extends Engine
            {
        boolean mVisible=true;

        RenderEngine(){

        }
        @Override
        public void onVisibilityChanged(boolean visible){
            mVisible = visible;
            if(visible)
            drawFrame();
        }

        private final Runnable mDrawScene = new Runnable(){
            public void run(){
                drawFrame();
            }
        };
        void drawFrame()
        {   
            //Don't render when not visible
            if(!mVisible) return;
            final SurfaceHolder holder = getSurfaceHolder();
            Canvas c= null;

            try
                {
                c=holder.lockCanvas();
                if(c!=null){
                    //TODO iterate through  sprites/renderables
                    //and render them here
                    c.drawColor(Color.MAGENTA);
                }
            }
            finally
            {
                if(c!=null) holder.unlockCanvasAndPost(c);
            }

            mHandler.removeCallbacks(mDrawScene);
            if(mVisible){
                mHandler.postDelayed(mDrawScene, 1000/30);
            }
        }
    }}

何が間違っているのか、何か考えはありますか?私はいくつかのチュートリアルを試していましたが、これが私がそれを成し遂げた方法です。また、ライブ壁紙の開発に役立つチュートリアルはありますか? renderscripts をいくつか入手しましたが、それらを eclipse に追加する方法がわかりません..よろしくお願いします!

4

1 に答える 1

0

これらは、あなたが従うことができる2つの非常に優れたライブ壁紙チュートリアルです:-

http://www.vogella.com/articles/AndroidLiveWallpaper/article.html

http://www.codeproject.com/Articles/108390/How-To-Create-Android-Live-Wallpaper

アイコンをライブ壁紙リストに表示するには、参照しているxmlファイル「レイアウト」に次のように定義されたコードが必要です。

      <?xml version="1.0" encoding="utf-8"?>
     <wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
android:settingsActivity="packagename.LiveWallpaperSettings"
android:thumbnail="@drawable/icon"/>

サムネイルはその中で定義する必要があります。

于 2013-07-04T16:25:15.790 に答える