Articles of live wallpaper

壁纸崩溃错误 – queueBuffer:错误排队缓冲区到SurfaceTexture

动态壁纸崩溃,代码如下 public void render(){ Canvas canvas = null; try{ canvas = this._surfaceHolder.lockCanvas(null); synchronized (this._surfaceHolder) { this.onDraw(canvas); } }catch(Exception e){ Log.w(“Surface holder “, e.toString());} finally{ if(canvas != null){ this._surfaceHolder.unlockCanvasAndPost(canvas); } } } protected void onDraw(Canvas canvas) { this.renderBackGround(canvas); for (Renderable renderable : this._fishes) { renderable.render(canvas); } }; 崩溃时出现以下错误 06-07 19:49:09.143:E / SurfaceTextureClient(13629):queueBuffer:错误排队缓冲区到SurfaceTexture,-19 06-07 19:49:09.143:E / SurfaceTextureClient(13629):queueBuffer(handle […]

GL壁纸示例仅显示模拟器中的绿色屏幕,但它在设备中工作

运行OpenGL应用程序是否需要任何特殊的模拟器设置? 我已经将“GPU仿真”属性设置为“是”。 我正在尝试使用从此链接中find的示例源运行Android示例动态壁纸,所需的输出是旋转三角形。 经过一点点的努力,我得到了应用程序运行,但它没有在模拟器中绘制任何东西,但是当我在设备中测试它工作,但在模拟器中它仍然只是显示绿屏,我在这里find了谷歌组中的讨论。 我试图设置视口如上所述。 但它仍然没有显示任何结果,表面改变我添加了这一行 gl.glViewport(0,0,width,height); 这是设置视口的正确方法吗? 这是我的渲染类, public class MyRenderer implements GLWallpaperService.Renderer { GLTriangle mTriangle; public void onDrawFrame(GL10 gl) { gl.glClearColor(0.2f, 0.4f, 0.2f, 1f); gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); gl.glMatrixMode(GL10.GL_MODELVIEW); autoRotate(gl); gl.glColor4f(.2f, 0f, .5f, 1f); mTriangle.draw(gl); } public void onSurfaceChanged(GL10 gl, int width, int height) { gl.glViewport(0, 0, width, height); gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); GLU.gluPerspective(gl, 60f, (float)width/(float)height, […]

Android在动态壁纸中播放电影文件

这有可能吗? 我尝试过使用MediaPlayer,但它会在MediaPlayer对象上抛出NullPointerException。 我可以让音频工作,但video不会。 mp=MediaPlayer.create(getApplicationContext(), R.raw.sample); mp.start(); mp.setOnCompletionListener(new OnCompletionListener() { public void onCompletion(MediaPlayer mp) { mp.release(); playing = false; } }); 样本是.mp4types。 任何人都知道为什么会发生这种情况,或者对另一种获取video的方法提出建议?

Android动态壁纸 – OpenGL与Canvas

我是一个相当“新手”的Android开发人员,我希望我的第一个项目之一是动态壁纸,但是我是否应该关注Canvas或OpenGL是否存在冲突。 作为新手,我知道我应该首先掌握Canvas,因为它更容易使用,但我更喜欢从我感兴趣的现实世界项目中学习,即使它有时有点倒退。 我之前以非常基本的方式使用过这两种方式,并且我理解它们的一般概念,但我不确定它们是如何转移到动态壁纸的领域。 我认为在动态壁纸上不需要OpenGL的全速运行,因为以最大FPS运行它会比电池耗尽更多,但与此同时我担心使用Canvas会导致滞后和在做更换主屏幕等事情时会口吃。 我一直倾向于使用OpenGL ES 2.0,以保持性能最佳,因为我对壁纸的初步想法涉及很多分层,我不确定Canvas是否有能力,但我想要一个更有经验的开发人员意见是否或者不是所有与使用OpenGL相关的额外工作(特别是关于动态壁纸,从我读过的内容)是值得的。

java.io.IOException:setDataSource failed:status = 0x80000000

我正在尝试使用媒体播放器在活动中播放url: mediaPlayer = MediaPlayer.create(getApplicationContext(), Uri.parse(“http://www.pocketjourney.com/downloads/pj/video/famous.3gp”), holder); 它工作正常。 我使用相同的代码将它设置为WallpaperService中@onSurfaceCreated的动态WallpaperService ,它给了我以下错误日志 D/MediaPlayer( 4128): create failed: D/MediaPlayer( 4128): java.io.IOException: setDataSource failed.: status=0x80000000 D/MediaPlayer( 4128): at android.media.MediaPlayer._setDataSource(Native Method) D/MediaPlayer( 4128): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:844)D/MediaPlayer( 4128): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:806)…… 如果我使用本地videouri设置动态壁纸..工作正常。 这里有什么想法/建议吗?

TouchWiz不会调用onOffsetsChanged

注意:由于这是三星特有的问题,我也在开发板上提问。 我目前正在Android中实现一个dynamic壁纸,我正在听我的壁纸引擎中的onOffsetsChanged()方法来改变壁纸,当用户滑过他的主屏幕。 这对我的私人银河标签与CM9自定义ROM伟大的作品。 在我的公司设备上,一个股票银河S3,它不工作。 不知何故,当主屏幕被改变时,Touchwiz不会调用onOffsetsChanged。 谷歌search的主题没有产生任何重大的结果,除了这个应用程序的描述,其中的开发指出:“固定滚动最新的TouchWiz启动onOffsetsChanged()不被调用。 现在我只想联系开发者,但不幸的是它也是一个三星应用程序。 有没有人知道一个解决方法来获得当前的偏移而不依赖于onOffsetsChanged? 有没有人遇到这个问题在自己的壁纸? 有谁知道这是故意的还是假设未来的Touchwiz版本会再次使用该方法?

android.media.audiofx.Visualizer每隔一段时间都会抛出exception

我正在为Android 2.3.3制作dynamic壁纸,并使用Visualizer类。 我已经有一个工作版本的Visualizer程序作为一个独立的工作,但是当我把代码放入一个Live Wallpaper服务时,我的问题就开始了。 以下代码是错误存在的地方: // Called in my Engine extension's constructor public void setupVisualizer() { mBytes = null; mVisualizer = new Visualizer(0); // EDIT mVisualizer.setEnabled(false); // This fixes the issue // END EDIT mVisualizer.setCaptureSize( Visualizer.getCaptureSizeRange()[1]); // IllegalStateException Thrown mVisualizer.setDataCaptureListener() { public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate) { updateVisualizer(bytes); } public void onFftDataCapture(Visualizer […]

在纵向模式下“修复”dynamic壁纸

我试图find“肖像”模式下修复我的dynamic壁纸的“最简单的方法”,至于现在,我发现的唯一方法是将整个canvas逆时针旋转90度,并将其“向下”移动设备处于横向模式时的屏幕宽度大小。 但是这个解决scheme不能很好的工作,我认为这是不利的(因为我在不同的位置有很多的位图)。 有没有人find一个更简单和有效的解决scheme来人为修复一个dynamic壁纸在一个方向模式?

在Android上硬件加速FFmpeg?

我为Android编译了FFmpeg的老版本(如果我记得正确它是0.6.X)。 FFmpeg解码video帧,缩放它,然后使用OpenGL在屏幕上绘制它。 据我所知,问题是解码和缩放 – 他们不是硬件加速。 我的问题是: ARM(Android)处理器的最新FFmpeg硬件版本是否已加速? 我是否以错误的方式去做这件事? 即,有没有更好的方法来做到这一点? 凡“这个”播放h264高清video作为一个video的dynamic壁纸—帧率需要高,所以硬件加速是可取的,只要可用。

dynamic壁纸在预览模式

在预览模式下(“设置”和“设置”屏幕),我需要使用墙纸进行不同的操作。 我怎么知道什么时候在那里?