• Android 动态壁纸(Live Wallpaper)编写注意事项小记


    image不要使用Thread

    应直接使用Handler与Runnable接口对象组合运行。

    使用Thread会产生一些莫名其妙的问题,比如:壁纸预览时报错;壁纸设置时报错;壁纸设置后闪一下即消失变为默认静态壁纸;壁纸设置后停止运行但切换到待机状态再切回还是能运行的。

    当壁纸设置后消失时,在DDMS中看到产生的异常信息类似:

    01-13 03:04:53.734: INFO/DEBUG(1856): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    01-13 03:04:53.734: INFO/DEBUG(1856): Build fingerprint: 'hkcsl_cht/htc_bravo/bravo/bravo:2.2/FRF91/236241:user/release-keys'
    01-13 03:04:53.734: INFO/DEBUG(1856): pid: 2830, tid: 2867  >>> com.skyd.mantrawheel <<<
    01-13 03:04:53.734: INFO/DEBUG(1856): signal 11 (SIGSEGV), fault addr deadbaad
    01-13 03:04:53.734: INFO/DEBUG(1856):  r0 00000000  r1 afd14699  r2 00000027  r3 00000074
    01-13 03:04:53.734: INFO/DEBUG(1856):  r4 afd42328  r5 00000000  r6 00000000  r7 0000a000
    01-13 03:04:53.734: INFO/DEBUG(1856):  r8 00000000  r9 48533900  10 485338d8  fp 000001e0
    01-13 03:04:53.734: INFO/DEBUG(1856):  ip 00001730  sp 48533590  lr deadbaad  pc afd11cf0  cpsr 60000030
    01-13 03:04:53.734: INFO/DEBUG(1856):  d0  643a64696f72646e  d1  6472656767756265
    01-13 03:04:53.734: INFO/DEBUG(1856):  d2  062b818b0627c18a  d3  0633418d062f818c
    01-13 03:04:53.734: INFO/DEBUG(1856):  d4  0000018f0000018f  d5  0000018f0000018f
    01-13 03:04:53.734: INFO/DEBUG(1856):  d6  be6659913f797051  d7  0000000043c24000
    01-13 03:04:53.734: INFO/DEBUG(1856):  d8  000001e000000000  d9  40790000000000a0
    01-13 03:04:53.734: INFO/DEBUG(1856):  d10 3fd34413509f79fe  d11 bfe3441350ad386e
    01-13 03:04:53.734: INFO/DEBUG(1856):  d12 3ddb7cdfd9d7bdbb  d13 0000000000000000
    01-13 03:04:53.734: INFO/DEBUG(1856):  d14 0000000000000000  d15 0000000000000000
    01-13 03:04:53.734: INFO/DEBUG(1856):  d16 018e41d4018e7b6a  d17 018dcea8018e083e
    01-13 03:04:53.734: INFO/DEBUG(1856):  d18 018ed1b2018dd842  d19 0190c492018fcb22
    01-13 03:04:53.734: INFO/DEBUG(1856):  d20 0000000000000000  d21 0000000000000000
    01-13 03:04:53.734: INFO/DEBUG(1856):  d22 0000018f0000018f  d23 0000018f0000018f
    01-13 03:04:53.744: INFO/DEBUG(1856):  d24 0000018f0000018f  d25 0000018f0000018f
    01-13 03:04:53.744: INFO/DEBUG(1856):  d26 ffff19a8ffff19a8  d27 ffff19a8ffff19a8
    01-13 03:04:53.744: INFO/DEBUG(1856):  d28 0003e5c00003e5c0  d29 0003e5c00003e5c0
    01-13 03:04:53.744: INFO/DEBUG(1856):  d30 0001000000010000  d31 0001000000010000
    01-13 03:04:53.744: INFO/DEBUG(1856):  scr 60000012
    01-13 03:04:53.814: INFO/DEBUG(1856):          #00  pc 00011cf0  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):          #01  pc 0000be62  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):          #02  pc 0000cdc2  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):          #03  pc 000008d8  /system/lib/libstdc++.so
    01-13 03:04:53.814: INFO/DEBUG(1856):          #04  pc 0004d3f8  /system/lib/libskia.so
    01-13 03:04:53.814: INFO/DEBUG(1856):          #05  pc 0006ad50  /system/lib/libskia.so
    01-13 03:04:53.814: INFO/DEBUG(1856):          #06  pc 0006d5b0  /system/lib/libskia.so
    01-13 03:04:53.814: INFO/DEBUG(1856): code around pc:
    01-13 03:04:53.814: INFO/DEBUG(1856): afd11cd0 2d00682d e029d1fb b12b68db c05cf8df
    01-13 03:04:53.814: INFO/DEBUG(1856): afd11ce0 f8442001 4798000c e054f8df 26002227
    01-13 03:04:53.814: INFO/DEBUG(1856): afd11cf0 2000f88e eee4f7fb f7fd2106 f04fe802
    01-13 03:04:53.814: INFO/DEBUG(1856): afd11d00 91035180 460aa901 96012006 f7fc9602
    01-13 03:04:53.814: INFO/DEBUG(1856): afd11d10 a905eb88 20024632 eb92f7fc eed0f7fb
    01-13 03:04:53.814: INFO/DEBUG(1856): code around lr:
    01-13 03:04:53.814: INFO/DEBUG(1856): deadba8c ffffffff ffffffff ffffffff ffffffff
    01-13 03:04:53.814: INFO/DEBUG(1856): deadba9c ffffffff ffffffff ffffffff ffffffff
    01-13 03:04:53.814: INFO/DEBUG(1856): deadbaac ffffffff ffffffff ffffffff ffffffff
    01-13 03:04:53.814: INFO/DEBUG(1856): deadbabc ffffffff ffffffff ffffffff ffffffff
    01-13 03:04:53.814: INFO/DEBUG(1856): deadbacc ffffffff ffffffff ffffffff ffffffff
    01-13 03:04:53.814: INFO/DEBUG(1856): stack:
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533550  00000015 
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533554  afd146c9  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533558  afd425a0  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     4853355c  afd4254c  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533560  00000000 
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533564  afd156e3  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533568  afd14699  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     4853356c  afd14699  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533570  00000074 
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533574  afd42328  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533578  00000000 
    01-13 03:04:53.814: INFO/DEBUG(1856):     4853357c  485335a4 
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533580  0000a000  [heap]
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533584  afd1493b  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533588  df002777 
    01-13 03:04:53.814: INFO/DEBUG(1856):     4853358c  e3a070ad 
    01-13 03:04:53.814: INFO/DEBUG(1856): #00 48533590  afd438e4  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533594  afd1040c  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     48533598  afd42328  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     4853359c  48e40628 
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335a0  48e40628 
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335a4  fffffbdf 
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335a8  afd42328  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335ac  afd4372c  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335b0  48e40628 
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335b4  afd0be67  /system/lib/libc.so
    01-13 03:04:53.814: INFO/DEBUG(1856): #01 485335b8  48e40660 
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335bc  00142180  [heap]
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335c0  00001404 
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335c4  485338b0 
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335c8  00000000 
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335cc  48e40628 
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335d0  48e40628 
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335d4  00000000 
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335d8  485338b0 
    01-13 03:04:53.814: INFO/DEBUG(1856):     485335dc  afd0cdc5  /system/lib/libc.so


    目前经过多次尝试仍未探知具体出错的地方。

    可以指定一个Activity为动态壁纸设置界面

    需在壁纸设置文件中这样指定:

    <?xml  version="1.0"  encoding="utf-8"?>
    <wallpaper  xmlns:android="http://schemas.android.com/apk/res/android"
    android:author="@+string/author"
    android:description="@string/description"
    android:thumbnail="@drawable/mani1"
     android:settingsActivity="com.skyd.mantrawheel.Main"
    />

    并且该Activity必须在AndroidManifest.xml中这样注册:

    <activity android:name=".Main" android:label="@string/app_name" android:exported="true"></activity>

    最好指定uses-feature标记

    在AndroidManifest.xml中指定如下代码会使程序在市场中对不支持动态壁纸功能的用户隐藏:

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

    必须在onCreate(SurfaceHolder surfaceHolder)中指定setTouchEventsEnabled(true);

    如果你放在onSurfaceCreated(SurfaceHolder holder)中指定,你会很郁闷地发现动态壁纸在2.1版本的系统中可以运行,2.2版本却报错。

    image

    参考资料

    http://www.androiddevblog.net/android/creating-android-live-wallpaper#

    http://code.google.com/p/krvarma-android-samples/source/browse/trunk/patternwallpaper/?r=80

    注意:此博客已停止更新,并迁移至blog.SkyDev.cc,后续都将在新地址更新。



  • 相关阅读:
    nyoj112-指数运算
    nyoj51-管闲事的小明
    nyoj29-求置转换问题
    nyoj24-素数 距离问题
    nyoj22-素数求和问题
    nyoj23-取石子(一)
    nyoj4-ASCII码排序
    nyoj169-素数
    并查集:CDOJ1593-老司机破阵 (假的并查集拆除)
    线段树: CDOJ1598-加帕里公园的friends(区间合并,单点更新)
  • 原文地址:https://www.cnblogs.com/SkyD/p/1934175.html
Copyright © 2020-2023  润新知