بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
لایو والپیپر
با سلام
من کد لایو والپیپر رو نوشتم ولی رو اندروید 4.4.2 به بالا 2 ثانیه بعد قطع میشه
ممنون
اینم لینک
http://stackoverflow.com/questions/27796518/android-live-wallpaper-is-loading-for-one-second-on-kitkat-4-4-4-but-working-fin
publicclassWallpaperServiceClassextendsWallpaperService{staticfinalHandler mHandler =newHandler();privateint position;privateCanvas canvas =null;publicSharedPreferences mPreferences;privateInputStreamis=null;@Overridepublicvoid onCreate(){
stopService(newIntent(WallpaperServiceClass.this,WallpaperServiceClass.class));
mPreferences = getSharedPreferences("wallpapersettings", MODE_PRIVATE);new mEngine();super.onCreate();}@OverridepublicEngine onCreateEngine(){returnnew mEngine();}class mEngine extendsEngine{privateMovie mMovie;privateint mMovieDuration;privateRunnable mMovieRun;float mScaleX;float mScaleY;int mWhen;long mStart;
mEngine(){try{
loadGif(Integer.valueOf(mPreferences.getString("flakes","0")));}catch(Exception e){
e.printStackTrace();}}privatevoid loadGif(int position){try{if(position ==0){is= getResources().openRawResource(R.raw.a);}elseif(position ==1){is= getResources().openRawResource(R.raw.b);}elseif(position ==2){is= getResources().openRawResource(R.raw.c);}elseif(position ==3){is= getResources().openRawResource(R.raw.d);}elseif(position ==4){is= getResources().openRawResource(R.raw.e);}if(is!=null){
mMovie =Movie.decodeStream(is);
mMovieDuration = mMovie.duration();is.close();}}catch(Exception e){
e.printStackTrace();}
mWhen =-1;
mMovieRun =newRunnable(){publicvoid run(){
nyan();}};}@Overridepublicvoid onDestroy(){super.onDestroy();
mHandler.removeCallbacks(mMovieRun);
android.os.Process.killProcess(android.os.Process.myPid());}@Overridepublicvoid onVisibilityChanged(boolean visible){super.onVisibilityChanged(visible);if(visible){
nyan();}else{
mHandler.removeCallbacks(mMovieRun);}}@Overridepublicvoid onSurfaceChanged(SurfaceHolder holder,int format,int width,int height){super.onSurfaceChanged(holder, format, width, height);
mScaleX = width /(1f* mMovie.width());
mScaleY = height /(1f* mMovie.height());
nyan();}@Overridepublicvoid onOffsetsChanged(float xOffset,float yOffset,float xOffsetStep,float yOffsetStep,int xPixelOffset,int yPixelOffset){super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep,
xPixelOffset, yPixelOffset);
nyan();}void nyan(){
tick();SurfaceHolder surfaceHolder = getSurfaceHolder();try{
canvas = surfaceHolder.lockCanvas();if(canvas !=null){
nyanNyan(canvas);}}finally{if(canvas !=null){
surfaceHolder.unlockCanvasAndPost(canvas);}}
mHandler.removeCallbacks(mMovieRun);if(isVisible()){
mHandler.postDelayed(mMovieRun,1000L/25L);}if(position !=Integer.valueOf(mPreferences.getString("flakes","0"))){
position =Integer.valueOf(mPreferences
.getString("flakes","0"));
loadGif(position);}}void tick(){if(mWhen ==-1L){
mWhen =0;
mStart =SystemClock.uptimeMillis();}else{long mDiff =SystemClock.uptimeMillis()- mStart;if(mMovieDuration !=0)
mWhen =(int)(mDiff % mMovieDuration);}}void nyanNyan(Canvas canvas){
canvas.save();
canvas.scale(mScaleX, mScaleY);
mMovie.setTime(mWhen);
mMovie.draw(canvas,0,0);
canvas.restore();}}
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .