Android: 各端末のカメラのサポート解像度まとめ

サンプリングアプリを作成し、twitter上のAndroid開発者の方々の協力を得て、
Androidの各端末のカメラのサポート解像度のまとめページを作りました!
各端末のサポート解像度一覧については以下のページをご覧下さい。

http://319ring.net/blog/android_camera_supportedpicturesizes

また、他の端末の情報も募集中です。
サンプリングアプリを作成しておりますので(ただし、2.0以上でしか動かず)、
もし協力してくださる方がいらっしゃいましたら、
twitter_id: patorash まで、ご連絡お願いします!!


Android: AdmobがダメならAdMakerを出す方法

Admobの広告の表示率が異常に悪いので、AdmobがダメなときはAdmakerの広告を出すためのプログラムを書いてみました。こういうのはみんな簡単に出来たらいいなぁと思っているに違いないので、公開しておきます。

まずはレイアウトファイル。広告エリア分のみ。
広告が表示されるまでは、ProgressBarの小さいやつを表示しておきます。AdMakerの広告はこの時点では表示させないため、visibilityをgoneにしています。

	<RelativeLayout android:id="@+id/adArea"
		android:layout_width="fill_parent"
		android:layout_height="48dip">
		<ProgressBar android:id="@+id/loading"
			android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:layout_centerInParent="true"
			style="?android:attr/progressBarStyleSmall" />
		<com.admob.android.ads.AdView 
			android:id="@+id/ad"
			android:visibility="visible"
			android:layout_width="fill_parent"
			android:layout_height="48dip"
			android:layout_centerInParent="true"
			app:backgroundColor="#000000"
			app:primaryTextColor="#FFFFFF"
			app:secondaryTextColor="#CCCCCC"
			app:keywords="Android applicaton"
			app:refreshInterval="30" />
		<jp.co.nobot.libYieldMaker.libYieldMaker
			android:id="@+id/admakerview"
			android:layout_width="fill_parent"
			android:layout_height="48dip"
			android:layout_centerInParent="true"
			android:layout_weight="0"
			android:visibility="gone" />
	</RelativeLayout>

次はJava側。Activityを継承したAdActivityというのをここでは書いてます。まぁこうしなくても良いですけどね。setAdViewをonCreateの最後に呼べばいいかなと思います。Admobの広告の取得に失敗したら、onFailedToReceiveAdが呼ばれますから、これをトリガーにして、AdMakerの広告を表示させています。

public abstract class AdActivity extends Activity {

	private static final String TAG = "AdActivity";
	private static final String ADMAKER_URL = "AdMakerさんから伝えられたURL";

	// Admobの広告用View
	protected AdView adView;

	/**
	 * 広告を表示させる
	 */
	protected void setAdView() {
		adView = (AdView) findViewById(R.id.ad);
		adView.setAdListener(new AdListener() {
			
			public void onReceiveRefreshedAd(AdView adView) {
				Log.d(TAG, "AdListener.onReceiveRefreshedAd called!");
			}
			
			public void onReceiveAd(AdView adView) {
				Log.d(TAG, "AdListener.onReceiveAd called!");
				// 広告が表示できたのでProgressBarを消す
				ProgressBar loading = (ProgressBar)findViewById(R.id.loading);
				loading.setVisibility(ProgressBar.GONE);
			}
			
			public void onFailedToReceiveRefreshedAd(AdView adView) {
				Log.d(TAG, "AdListener.onFailedToReceiveRefreshedAd called!");
			}
			
			public void onFailedToReceiveAd(AdView adView) {
				Log.d(TAG, "AdListener.onFailedToReceiveAd called!");
				// プログレスバーを消す
				ProgressBar loading = (ProgressBar)findViewById(R.id.loading);
				loading.setVisibility(ProgressBar.GONE);
				// AdMakerの広告を表示するのでAdViewの更新を行わせない
				adView.setRequestInterval(0);
				adView.setVisibility(AdView.GONE);
				// AdMakerの広告を表示させる
				libYieldMaker mv = (libYieldMaker)findViewById(R.id.admakerview);
				mv.setVisibility(libYieldMaker.VISIBLE);
				mv.setUrl(ADMAKER_URL);
				mv.startView();
			}
		});
	}
}

参考になりましたら幸いですー。


Android: AdMakerの広告の影響でIMEの出方が変わる

音声エディタの広告の表示率が異常に悪いので、Admobが表示されない場合はAdMakerの広告を表示するようにプログラムしていて、それはできました。やり方についてはまた別の記事を書こうと思います。

現在、問題が発生していて、広告が表示されているとIMEの表示の挙動が変わるのです。まぁ見せたほうが早いので、画像載せます。

まずは、広告がない場合。
EditTextにフォーカスが当たったらIMEが下からニョキッと出てきて、EditTextの領域もちゃんと表示されています。これが普通の挙動でした。ちなみにAdmobの場合は広告が表示されていてもこうなります。

次は、広告がある場合。
一見、普通にAdMakerさんの広告が表示されていて、よさげ。

EditTextにフォーカスがあうと、EditTextを隠れてしまいます。
画面の下の領域を必ず表示するように出てきます。

まぁ原因が私の作ったレイアウト側にもあるかもしれないのですけれど、AdMakerの広告が表示されたときだけ、このようになるので、個人的には私のせいじゃない!と思うんですけどね…。EditTextを使っているアプリとAdMakerさんは相性が悪いのかもしれないですね〜…。

改善を希望したいところです。
AdMakerさん、宜しくお願いします!


Android: LuvPad AD100 購入・感想など

先週からtwitter上では呟いていましたが、LuvPadを購入しました。
今のところは、WiFiでぼちぼち家の中で使うというレベルでしか使えていないので、微妙なのですが、感想などをちょろっと書こうかなと思います。あくまで使用感のみを書きます!まずはユーザ目線で!

ちなみに私自身は開発者ですけれどアプリにすごく詳しいわけでもないし、カスタムROMをインストールとかしたこともないので、ユーザとしては基本的な端末を使うようなレベルでの知識しかありません。いわゆるヒトバシラーさん達ほどは実力ないです!では書きます。

■良いところ

  1. Android 2.2である
  2. 起動が速い!
  3. インターネットはしやすい(一部難あり)

■悪いところ

  1. Androidマーケットが入ってないのでアプリ追加が難しい(これに尽きる)
  2. 元々Flashが入っていない(非正規のが入れられる)
  3. 元々ほとんどアプリが入っていない(ネットくらいしかできん)
  4. ソフトウェアキーボード領域が狭い…
  5. Simeji(IME)が使いにくい…
  6. 結構重たい
  7. ギャラリーアプリが強制終了する

こんなところでしょうか。

いいところは正直、一般ユーザしてはほとんどないです。
起動が思ったよりも速くて、おっ!と思ったのですが、ほとんどできることがなくて、「さて、どーしよー…」って感じでした。とりあえずネット繋いで、ブラウジングしてみたんですが、やっぱり画面が1024×600だから、ネットは見やすいです。ただし、Flashが動かないので(元々のままだと)、ほぼ何もできんっす。PDFビューワすら元々入ってないし。

悪いところはたくさんあります。まず分かっていたことでしたが、Androidマーケットが入っていないので、アプリのインストールのハードルが高いです。またGoogle関連のAPIを使うアプリは、ほぼインストールできません。LuvPadのページに行ったらCamangi Marketを使ってくれと書いてあります。

http://www.mouse-jp.co.jp/luvpad/

Android 2.2なのに、Flashが最初から入ってないのも、面倒です。上のLuvPadのページにも書いてありますが、Tegraに対応したFlashを提供予定とは書いてあります。しかし色々と検索していると、LuvPadで動くFlashのapkファイルを見つけることができます。実際に動かす事はできました。(やりかたは今のところ書いていいのかわからないので、ググって下さい)

さて、次にソフトウェアキーボードのエリアについてです。
まあ実際に写真をアップしたほうが早いでしょう。

横長に使用する場合。

画面の1/4くらいの広さなのですが、正直ボタンが微妙に小さくて、よく打ち間違えました…。使いにくい。

縦長に使用する場合。

ボタンの大きさもでかくて、携帯電話のインターフェースに近いので、入力もしやすいです。これはネット初心者にはいいかもしれないです。フリックに慣れてる人からすると、移動幅がでかくてちょっとうざい。でも横長のソフトキーボードよりは入力しやすいかな…。

さて、IMEについてですが、プリインストールされているSimejiですが、正直使いにくいです…。なんか重たい。タッチの性能が悪いのか、時々うまく動かなかったり、フリックの反応が悪かったり…。あと、入力間違いしたときにカーソルを戻したいのですが、横キーボードだと「戻る・進む」がないのです(縦だとある)。速攻でOpenWnnフリック対応をインストールしました。こっちのほうが軽くて使いやすい!だいたいAndroidマーケットがないから、マッシュルームも使えんし…。

あと重量がそれなりに重たいです。
iPad以上に重いので、なんだかんだで疲れます。

ギャラリーは、coolirisが使われています。
最初は、「お、これは期待できるかも!?」と思ったのですが、動かして3秒後に強制終了しました…。おそらくメモリの処理が旨い具合にいってないのでしょう。

総括すると、iPadの代わりとして買うとか、そういう気持ちで買うと後悔するでしょう。
初心者にとっては、全く使える端末ではありません。
使える端末にするための環境も、Androidマーケットが入っていないので整っていません。
使う人を選ぶ、ハードルの高い端末です。現状では、それらをわかった上で買う人じゃないと、お金の無駄遣いです。

■じゃあどうすれば使える端末になるのか?
とりあえず、アプリを入れられないと、使い道がない!

ひとまずはCamangi Marketをインストールしましょう。
しかし、Camangi Marketにあるアプリも、あんまり量がないですし、日本語対応のアプリもまだ少なそうです。
それでもないよりはマシかなというレベル。

他に正規のAndroid端末を持っている人は、アプリをSDカードにバックアップ取って、移すと良いでしょう。実際私はそうしました。が!便利系のアプリは案外Google APIを使ってるものが多かったり、GPSを使っていたりで、インストールすらできませんでした。残念です。

何気に便利だったのが、AndroAppです。
ここはサイトがapkファイル(Androidのアプリファイル)をそのままダウンロードできるようになっているので、LuvPadのブラウザでアクセスしてそのままapkファイルからアプリをインストールできます。ベクターがやっている日本語のサイトなので、日本語のアプリばかりですし、そういう意味では信頼性もあっていいのではないでしょうか?

一応、Black Market Downloaderもインストールして使ってみました。これだと、Androidマーケットのアプリをある程度使えるようになります。ただ、正規のAndroid端末を一台は持っていないと厳しいです。

またLuvPadについて分かることがありましたら、ブログにアップしていこうと思います。


Eclipse: slim3のチュートリアルでMac Java 64bit問題

(追記)
@T_1000_Free さんが、既に解決策を書かれていることを、この投稿をした5分後に教えて下さいました。twitter恐るべし!ありがとうございます。こちらのほうが参考になりますw
MacのEclipseでSlim3を使うには。 T-1000の日記

— 以下、私が書いたやつ。

掲題の通りなのですが、slim3の勉強をしようと思って本を買ったのですが、BigTableのこととか読んでもいまいちなままなので、チュートリアルを通して経験してみるかと思い、slim3のサイトのチュートリアルをやっていたのです。

で、ハマったとw
ハマったページは以下。
コントローラーとテストの作成

で、build.xmlのgen-controllerタスクを右クリックして云々のところでもろにエラー発生。

java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM

64bit Javaですぜと怒られた。Macというか、SnowLeopardだとこういうのでよく躓く…。で、32bitのJavaにしようと、アプリケーション > ユーテリティ > Java Preferenceから32bitを優先にして、一応マシン自体も再起動かけたにもかかわらず、エラーが出続ける。なんぞこれ!と。

解決策としては、VMの起動時に引数に-d32を渡せば32bit Javaでやってくれるらしいので、gen-controllerタスクを右クリックして 実行 > 外部ツールの構成 を開く。

JREタブのVM 引数に-d32を記述して、適用ボタンを押したのち、実行!

これでチュートリアルの続きができるようになります。