タブレットでは問題なく動作するアプリを作成しましたが、samsung Galaxy ace では停止します。LogCat を実行すると、次のログが取得されます。
どんな助けにも感謝します。
I/DefContainer( 6430): /mnt/sdcard/apps/ketekambioFull.apk を /mnt/asec/smdl2tmp1/pkg.apk にコピーしました D/MountService( 1492): :::: renameSecureContainer :: パス = /mnt/sdcard、oldId = smdl2tmp1、newId = com.mydom.mypackage-1 D/VoldCmdListener(1319): asec は smdl2tmp1 com.mydom.mypackage-1 の名前を変更します D/MountService( 1492): :::: isSecureContainerMounted :: パス = /mnt/sdcard、id = com.mydom.mypackage-1 W/PackageManager(1492): コンテナ com.mydom.mypackage-1 のマウント D/MountService( 1492): :::: mountSecureContainer :: パス = /mnt/sdcard、id = com.mydom.mypackage-1、ownerUid = 1000 D/VoldCmdListener(1319): asec マウント com.mydom.mypackage-1 {} 1000 D/Vold (1319): Fat::doMount マウント (/dev/block/dm-2, /mnt/asec/com.mydom.mypackage-1,vfat,0x00200087,utf8,uid=1000,gid=0,fmask =222,dmask=222,ショートネーム=混合) I/PackageManager(1492): smdl2tmp1 を新しいパスの com.mydom.mypackage-1 に正常に名前変更しました: /mnt/asec/com.mydom.mypackage-1 D/MountService( 1492): :::: getSecureContainerPath :: パス = /mnt/sdcard、id = com.mydom.mypackage-1 D/VoldCmdListener(1319): asec パス com.mydom.mypackage-1 D/MountService( 1492): :::: isSecureContainerMounted :: パス = /mnt/sdcard、id = com.mydom.mypackage-1 I/Z7BroadcastReceiver(4649): onReceive() 開始、インテント: インテント { act=android.intent.action.PACKAGE_ADDED dat=package:com.mydom.mypackage flg=0x10000000 cmp=com.seven.Z7/.service.Z7BroadcastReceiver (エキストラあり) } D/Launcher.SWidgetPkgMgr(1585): addPackage=com.mydom.mypackage V/PackageIntentReceiver( 4603): onReceive() インテント: インテント { act=android.intent.action.PACKAGE_ADDED dat=package:com.mydom.mypackage flg=0x10000000 cmp=com.sec.android.app.controlpanel/.PackageIntentReceiver (エキストラがあります) } pkg:com.mydom.mypackage action:android.intent.action.PACKAGE_ADDED I/ActivityManager( 1492): アクティビティ com.mydom.mypackage/.SplashScreenActivity の proc com.mydom.mypackage を開始します: pid=6501 uid=10080 gids={} W/ActivityManager(1492): com.mydom.mypackage/.ActivityJuego を起動しようとしています D/dalvikvm( 6501): VFY: Lcom/corral/keteKambio/ActivityJuegoのデッド コード 0x001b-001c ;. getDisplayWidth (Landroid/コンテンツ/コンテキスト;)I D/dalvikvm( 6501): VFY: Lcom/corral/keteKambio/Visor のデッド コード 0x002e-0034;. (Landroid/コンテンツ/コンテキスト;)V D/dalvikvm( 6501): VFY: Lcom/corral/keteKambio/Visor のデッド コード 0x002e-0034;. (Landroid/コンテンツ/コンテキスト;Landroid/util/AttributeSet;)V D/dalvikvm( 6501): VFY: Lcom/corral/keteKambio/Visor のデッド コード 0x002e-0034;. (Landroid/content/Context;Landroid/util/AttributeSet;I)V E/AndroidRuntime(6501): java.lang.RuntimeException: アクティビティ ComponentInfo を開始できません {com.mydom.mypackage/com.mydom.mypackage.ActivityJuego}: android.view.InflateException: バイナリ XML ファイルの行 #69: クラスの膨張エラーcom.mydom.mypackage.Visor E/AndroidRuntime(6501): 原因: android.view.InflateException: Binary XML file line #69: Error inflating class com.mydom.mypackage.Visor E/AndroidRuntime (6501): com.mydom.mypackage.ActivityJuego.onCreate (ActivityJuego.java:101) で E/AndroidRuntime(6501): com.mydom.mypackage.Visor.(Visor.java:87) W/ActivityManager(1492): 強制終了アクティビティ com.mydom.mypackage/.ActivityJuego W/ActivityManager(1492): HistoryRecord{40849d30 com.mydom.mypackage/.ActivityJuego} のアクティビティ一時停止タイムアウト D/VoldCmdListener( 1319): CommandListener::AsecCmd::runCommand -> com.mydom.mypackage-1 E/InputDispatcher(1492): チャネル '407a6fa8 com.mydom.mypackage/com.mydom.mypackage.SplashScreenActivity (サーバー)' ~ コンシューマーが入力チャネルを閉じたか、エラーが発生しました。イベント=0x8 E/InputDispatcher(1492): チャネル '407a6fa8 com.mydom.mypackage/com.mydom.mypackage.SplashScreenActivity (サーバー)' ~ チャネルは回復不能なほど壊れており、破棄されます! I/WindowManager(1492): WIN DEATH: ウィンドウ{407a6fa8 com.mydom.mypackage/com.mydom.mypackage.SplashScreenActivity paused=true} W/ActivityManager(1492): HistoryRecord{40ab1d68 com.mydom.mypackage/.SplashScreenActivity} のアクティビティ破棄タイムアウト W/ActivityManager(1492): HistoryRecord{40849d30 com.mydom.mypackage/.ActivityJuego} のアクティビティ破棄タイムアウト
タブレットでは機能するのに、携帯電話の samsung galaxy ace では機能しない理由がわかりません。他の相対リンクを読んで理解したことを強調しました。
ログは、XML の 69 行目で inflateException が発生していることを示しています。次にこのファイルを示します。問題は、SurfaceView である Visor クラスの膨張にあるようです。VFY: dead code 0x001b-001c も表示されますが、どれが主なエラーなのかわかりません。VFY: デッドコードまたは InflateException?.
ActivityJuego.xml:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/TableLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:stretchColumns="3"
tools:context=".MainActivity" >
...
...
...
...
<LinearLayout
android:id="@+id/LinearLayoutVistaCliente"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/borde"
android:padding="1dp"
android:paddingLeft="1dp"
android:paddingTop="1dp"
android:paddingRight="1dp"
android:paddingBottom="1dp">
<com.mydom.mypackage.Visor
android:id="@+id/visorCliente"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0" />
</LinearLayout>
...
...
...
...
</TableLayout>
ActivityJuego.java
package com.mydom.mypackage;
public class ActivityJuego extends Activity {
public static int nivel = 1;
private Visor visorCliente;
private Visor visorCaja;
private static Typeface myTypeface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getDisplayWidth(this) <= 720) {
smallScreen = true;
requestWindowFeature(Window.FEATURE_NO_TITLE);
}
setContentView(R.layout.activity_juego);
visorCliente = (Visor) findViewById(R.id.visorCliente);
visorCaja = (Visor) findViewById(R.id.visorCaja);
myTypeface = Typeface.createFromAsset(this.getAssets(), "LCD.ttf");
}
...
...
...
...
}
そして最後に、
バイザー.java
package com.mydom.mypackage;
public class Visor extends SurfaceView implements SurfaceHolder.Callback {
BitmapFactory.Options opts = new BitmapFactory.Options();
...
...
...
public Visor(Context context) {
super(context);
getHolder().addCallback(this);
opts.inMutable=true;
}
public Visor(Context context, AttributeSet attrs) {
super(context, attrs);
getHolder().addCallback(this);
opts.inMutable=true;
}
public Visor(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
getHolder().addCallback(this);
opts.inMutable=true;
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
if (caja != null) {
draw(caja, canvas);
}
}
...
...
...
...
}
よろしくお願いします。