我在这个问题中提到的错误在SO中有一些问题。但是,我看了20个问题,但没有人用Android服务谈过这个错误。我正在尝试将视频转换为动态壁纸,我正在阅读this tutorial,其中我应该为壁纸创建专门的服务:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.asgardia.peacelivewallpaper">
<application android:allowBackup="true" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher" android:supportsRtl="true"
android:theme="@style/AppTheme">
<service android:name="com.asgardia.peacelivewallpaper.peacelivewallpaperservice"
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/peacelivewallpaper" >
</meta-data>
<uses-feature
android:name="android.software.live_wallpaper"
android:required="true" >
</uses-feature>
</service>
</application>
在SO中的问题中,问题是海报应该将包名添加到.java类,其名称与服务相同。我在app/java/<package-name>/java
添加了一个名为peacewallpaperservice.java
的新类,我添加了这个类,因为从中我可以理解每个服务需要一个同名的类,但这似乎没有做太多。我仍然得到error: cannot resolve symbol peacelivewallpaper
。我很感激一些帮助。
正如教程中提到的,我应该创建一个引擎来解码GIF文件:
public 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;
}
}