2011年8月13日土曜日

[Android]WebViewでWebViewClientを指定する

WebViewはWebViewClientをセットしないとブラウザを起動するんです。
いままでWebViewClientを指定しなかったことがなかったので、知りませんでした...。

2011年8月11日木曜日

[Android]USBドライバ(その3)

GDD Blog: [Android]USBドライバ(その2)で、簡単に接続させる方法を調べましたが、結局見つかりませんでした。その代わり、デバイスIDを調べる方法がありました!

デバイスマネージャ→プロパティ→詳細タブを表示し、プルダウンから「ハードウエアID」を選択し、android_winusb.infにそのIDを書くだけ。コレならいちいち調べなくてもいいので楽チン。

NexusOneの場合、
%CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_4E12&MI_01

となっており、この右辺にハードウエアIDで出てくる長いほうを書けばOKっぽい。

2011年8月8日月曜日

[Android]デバッグが開始できない(デバイスを認識しない)

AndroidSDKとADTって、結構頻繁にアップデートがあります。
いつもはeclipseの環境をコピーしてからアップデートしていたんですが、今日は時間がなくて、とりあえずアップデートしてみました。IDEはいい感じで動いていたんですが、デバック開始時にこんなメッセージが!

Automatic Target Mode: Unable to detect device compatibility. Please select a target device.

そして「Android SDK及びADVマネージャを開く」ボタンを押しても空っぽの画面が。。。
eclipseやマシンを再起動しても、状況は変わらず。

そうだ。アレだ!とEclipseを-cleanオプション付きで起動したら直りました。
いつもコレを忘れちゃうんですよね。

2011年7月20日水曜日

[他]javaのパッケージ名登録サービスを利用する

androidアプリケーションでは、パッケージ名を使って、アプリケーションをユニークにするという仕組みがあります。しかしjavaの実装上、適当にパッケージ名をつけることができます。
また、企業であればドメインを使うのが一般的ですが、じゃあ個人は?といったとき、ちょっと困ってしまいます。で、調べてみると「パッケージ名登録」というサービスが...。しかも無料で利用できます。
サービスの提供元は、財団法人インターネット協会です。公的な団体だと思いますので、個人でアプリ開発してマーケットに登録するような人は1つ持っておくといいかもしれません。

2011年7月19日火曜日

[Android]ScrollViewとHorizontalScrollView

サイズの異なるデバイスの動作確認をしたいとき、小さな画面のデバイスを使うと、画面仕切れません。そこで、縦横にスクロールさせるためにScrollViewとHorizontalScrollViewを組みあわせてコンテンツをスクロールさせることがありました。

しかし、微妙なタッチを認識するのか、たてにスクロールさせようとしているのに横向きのスクロールがヒットしたりして、イライラします。

で、対面に座っている人に、「いいのがアルヨ」と教えてもらったのが、この2DScrollView。コレコレ。こういうの探していたのよ。
クラスも1つだし、Apache License2.0って書いてあるので、比較的使いやすいかも。

2011年7月5日火曜日

[Android]スキーマ起動に対応する

ブラウザのハイパーリンクで何かアクションしたい場合に使えます。
amコマンドでINTENT投げても起動します。えぇまぁ、 AndroidMAnifest.xmlにかくだけですよ。

<!-- xxx://com.foo.bar/appname で起動可能になる -->
<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="xxx" android:host="com.foo.bar" android:path="/appname"/>
</intent-filter>

2011年7月4日月曜日

[Android]AppWidgetからActivityを呼び出したらエラーが...

先日、AppWidgetsを作成していて、ボタンを押下したらActivityを起動するために、ボタン押下でブロードキャストし、AppWidgetProvider#onReceiveで、Context#startActivityしてみると、こんなエラーが...。

java.lang.RuntimeException: Unable to start receiver com.dustroid.dust04.CountDownAppWidget: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

で、調べてみると、Intent#setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)っていう風にする必要があるらしいことがわかった。っていうかメッセージをよく見ればわかるよね。
...英語読めるようになりたいな。