読者です 読者をやめる 読者になる 読者になる

hyoromoのブログ

iOS/AndroidもしくはCocos2dxネタを書いています

GalaxyTab固有の問題と解決方法

Android

海外のGalaxyTabで、現時点で見つけた問題と解決方法をまとめました。
なお、国内向けに発売されるGalaxyTabでも同様の現象になるかは不明です。

Activityのウィンドウサイズが小さく表示される

このように表示されるアプリがあるみたい。
少し分かり難いですが、ディスプレイサイズよりもActivityサイズが一回り小さい事が、タイトルバーを見て分かるかと思います。
test1

解決方法

AndroidManifest.xmlminSdkVersinotargetSdkVersionどちらかを書けばOKsdk versionは4以上にしてください。
どうやら、デフォルトだと3以前の中解像度扱いとなるようです。例えばmanifestタグ内へ以下のように書いておく。

<uses-sdk android:minSdkVersion="4" />

test2

LiveWallpaperでMediaPlayerが再生後エラーになる

これはGalaxySでも同様に発生するようで、SAMSUNG固有のバグっぽい。
途中でstopすればエラーにはならないが、完全に再生し終わったタイミングでnative側でエラーとなる。

解決方法

要は再生終了直前にMediaPlayer#stopすればOK
方法は何でも良いですが、handlerを使えば楽。
MediaPlayer#getDuration で再生ミリ秒数が取得できるので、鳴り終わる少し前にstop処理させるために調整すればOK。

MediaPlayer mMediaPlayer;
private void hoge() {
    handler = new Handler();
    mMediaPlayer = MediaPlayer.create(mContext, R.raw.hoge);
    handler.postDelayed(mMediaPlayStopper, mMediaPlayer.getDuration() - 適当な数値);
}

private final Runnable mMediaPlayStopper = new Runnable() {
    public void run() {
        mMediaPlayer.stop();
        mMediaPlayer.release();
        mMediaPlayer = null;
    }
};

なお、ActivityでMediaPlayerを使用しても同様のエラーは発生しません。