1

私は現在、キャンバスに描画する集中的なライブ壁紙に取り組んでいます。次のビデオを見つけました: http://www.youtube.com/watch?v=v9S5EO7CLjo .

しかし、ハードウェア アクセラレーションを実装しようとすると、エラーが発生します。これが私のコードです:

if (c != null && mStaticRects.length > 10 && c.isHardwareAccelerated())
                    drawSurfacePortrait(c);

if (c != null && mStaticRects.length < 20 && c.isHardwareAccelerated())
                    drawSurfaceLandscape(c);

これを実行すると、対応するエラーが次のようになります。

AndroidRuntime(382): java.lang.NoSuchMethodError: android.graphics.Canvas.isHardwareAccelerated

最後に私のマニフェストです...

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="stuff.of.mine"
    android:versionCode="1"
    android:versionName="1.0" >

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" />

<uses-permission android:name="android.permission.VIBRATE" ></uses-permission>


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

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" 
    ***android:hardwareAccelerated="true"***>
    <service
        android:name=".SomeWPService"
        android:permission="android.permission.BIND_WALLPAPER" 
        ***android:hardwareAccelerated="true"***>
        <intent-filter>
            <action android:name="android.service.wallpaper.WallpaperService" />
        </intent-filter>

        <meta-data
            android:name="android.service.wallpaper"
            android:resource="@xml/mylwp" />
    </service>

</application>

4

3 に答える 3

5

わかりました、私はstackoverflowを探していて、自分の質問に対する答えに出くわしました

実際、ビデオの男性の 1 人である Romain Guy は、次のスレッドで回答しています。

SurfaceView のキャンバス - ハードウェア アクセラレーション

彼は言い​​ます:

SurfaceView.lockCanvas() によって返されるキャンバスは、現時点ではハードウェア アクセラレーションできません。

私が知りたいのは、SurfaceView.lock と unlockCanvas なしでライブ壁紙を作成する方法です。

于 2012-07-01T23:26:43.937 に答える
3

canvas.isHardwareAcceleratedは API 11 で導入され、minSdkVersion は 7 です。それを 11 に変更してみてください。

于 2012-06-29T18:07:43.197 に答える