2016-12-31 127 views
0

我想在Android中使用gif图像作为壁纸,而且我正面临一些问题。 我有以下错误:“未找到默认活动”。这个项目没有错误,但是当我运行它时,我在Android Studio上遇到了这个错误。WallpaperService中的“默认活动未找到”

public class GIFWallpaperService extends WallpaperService { 

    @Override 
    public WallpaperService.Engine onCreateEngine() { 
     try { 
      Movie movie = Movie.decodeStream(
        getResources().getAssets().open("girl.gif")); 

      return new GIFWallpaperEngine(movie); 
     }catch(IOException e){ 
      Log.d("GIF", "Could not load asset"); 
      return null; 
     } 
    } 

    private class GIFWallpaperEngine extends WallpaperService.Engine { 

     private final int frameDuration = 20; 

     private SurfaceHolder holder; 
     private Movie movie; 
     private boolean visible; 
     private Handler handler; 

     public GIFWallpaperEngine(Movie movie) { 
      this.movie = movie; 
      handler = new Handler(); 
     } 

     @Override 
     public void onCreate(SurfaceHolder surfaceHolder) { 
      super.onCreate(surfaceHolder); 
      this.holder = surfaceHolder; 
     } 

     private Runnable drawGIF = new Runnable() { 
      public void run() { 
       draw(); 
      } 
     }; 


     private void draw() { 
      if (visible) { 
       Canvas canvas = holder.lockCanvas(); 
       canvas.save(); 
        // Adjust size and position so that 
        // the image looks good on your screen 
        canvas.scale(3f, 3f); 
        movie.draw(canvas, -100, 0); 
       canvas.restore(); 
       holder.unlockCanvasAndPost(canvas); 
       movie.setTime((int) (System.currentTimeMillis() % movie.duration())); 

       handler.removeCallbacks(drawGIF); 
       handler.postDelayed(drawGIF, frameDuration); 
      } 
     } 

     @Override 
     public void onVisibilityChanged(boolean visible) { 
      this.visible = visible; 
      if (visible) { 
       handler.post(drawGIF); 
      } else { 
       handler.removeCallbacks(drawGIF); 
      } 
     } 

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

这是我的清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.hathy.gifwallpaper"> 

    <application android:allowBackup="true" android:label="@string/app_name" 
     android:icon="@drawable/ic_launcher" android:theme="@style/AppTheme"> 

     <service 
      android:name=".GIFWallpaperService" 
      android:enabled="true" 
      android:label="GIF Wallpaper" 
      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/wallpaper" > 
      </meta-data> 
     </service> 

    </application> 

    <uses-feature 
     android:name="android.software.live_wallpaper" 
     android:required="true" > 
    </uses-feature> 
</manifest> 
+0

没有默认的活动 – shadygoneinsane

回答

0

清单文件在您更换此。

<intent-filter> 

    <action android:name="android.service.wallpaper.WallpaperService"/> 

    <category android:name="android.intent.category.LAUNCHER" /> 

</intent-filter> 

我认为这将解决您的Problem.please检查并让我知道。

希望这将有助于..(?:

+0

仍然没有工作“默认的活动没有找到”错误 –

-1

运行 - >设置 - 编辑>启动 设置为“无”