Android/App개발2010. 3. 18. 12:07
http://android-developers.blogspot.com/2010/02/live-wallpapers.html

Live wallpapers

Android 2.1에서 소개된 libe wallpaper로 사용자는 이제 더 풍부하고, 애니매이션가능하고 더 인터랙티브한 그들만의 홈스크린을 즐길수 있게 되었다. live wallpaper는 일반 Android application과 아주 유사하고 플랫폼의 모든 자산에 접근이 가능하다: SGL(2D drawing), OpenGL(3D drawing), GPS, accelerometers, network access, .... Nexus One에 들어가 있는 live wallpaper는 이런 API들을 이용하여 더 재미있고 흥미있는 UX의 예를 보여준다. 예를 들어 Grass wallpaper는 폰의 위치를 가지고 해가뜰때와 질때는 구분하여 하늘 이미지를 적절히 표시한다.


자신만의 live wallpaper를 만드는것은 쉽고, SurfaceView와 Canvas를 다루어보았다면 특히 더 쉽다. 작성방법을 배우려면 Android 2.1SDK에서 제공하는 CubeLiveWallpaper예제를 받아야 한다(android-2.1/samples/CubeLiveWallpaper에 있다)

Live wallpaper는 일반적인 Android service와 유사하다. 한가지 다른점은 onCreateEngine()이라는 메서드가 추가된것이다. 이 메서드는 WallpaperService.Engine을 생성하기 위해서 있다. 이 엔진은 wallpaper의 lifecycle을 관리하고 그리는것에 대한 처리를 담당한다. 시스템은 그릴수 있는 surface를 제공한다. wallpaper그리기는 아주 비용이 비싸기 때문에 가능한 CPU자원을 많이 사용하지 않도록 피해서 코드를 최적화해야 한다. 이는 wallpaper의 lifecycle관리가 중요한 이유이기도 한다. wallpaper가 화면에서 보여지지 않을때 wallpaper는 관련된 모든 activity를 stop해야 한다.

엔진은 또한 사용자나 Home app와 상호작용하기 위해 몇가지 메서드를 구현할 수 있다. 사용자가 다른 home screen으로 이동하기 위해 scroll하기를 원한다면 onOffsetChanged()를 사용할 수 있다. touch event를 처리하고자 한다면 onTouchEvent(MotionEvent)를 구현할 수 있다. 마지막으로 app들이 live wallpaper에 명령을 보낼수 있다. 현재는 표준 home app만이 live wallpaper의 onCommand()로 명령을 보낼수 있다 :

  • android.wallpaper.tap : 사용자가 워크스페이스상의 비어있는 곳을 tap할 때 사용됨. Water live wallpaper에서 사용자가 터치한 부분에서 새로운 물줄기가 생성되도록 구현할때 사용되었다.
  • android.home.drop : 사용자가 워크스페이스상에 ICON이나 Widget을 drop할때 사용됨.

Live wallpaper는 Android 2.1의 기능이다. 당신이 만든 live wallpaper를 다운로드하여 잘 동작할것을 보장하기 위해서는 manifest에 아래와 같이 기술해야 한다는 것을 기억하라 :

  • <uses-sdk android:minSdkVersion="7" />, Android 2.1에서 동작하도록 설정.
  • <uses-feature android:name="android.software.live_wallpaper" />, live wallpaper임을 설정

많은 live wallpaper들이 미리 마켓에 많으니 사용해보삼.

Posted by 삼스