This site is described in Japanese.

Filed under: 開発TIPS

[TIPS]Bluetooth SPPのUUID

Bluetoothの接続には、UUIDを指定しないといけないらしい。
その詳細は良く分かりませんが、BluetoothでSPPを使って接続する場合、UUIDは

00001101-0000-1000-8000-00805F9B34FB

を指定しなければいけない。

Android公式のサンプルBluetoothChatを、SPPのデバイスと接続するアプリに流用する場合、このUUIDに変更するのを忘れてはいけない。 変更しておかなければデバイスの接続に失敗する。 プログラムは普通にビルドされるし例外も発生しないので、UUIDが原因の場合、原因が特定しづらいと思う。

 

以前、僕の自作アプリBluetoothTerminalに外国の方から、「自作のアプリでは失敗するけど、BluetoothTerminalでは成功するのは何故か?」と言った感じの質問が有ったけれど、その時僕はこのUUIDの問題についてド忘れしていて「分からない」と言う感じの答えを返しておいた。
最近になってこのことを思い出したのだけれど、その人のアプリが動かないのは、これが原因の可能性が大きいと思う。
もうその人は見に来ないだろうけど・・・

ちなみに、検索すればこのことを解説しているサイトは山ほど見つかるのですが、上記のことがちょっと残念な気持ちなので、TIPSとしてブログに残しておくことにしました。

 

コメントする 2012年4月24日

[TIPS]String型とbyte配列の相互変換

普通のアプリ作成では、あまり使うことは無いかなと思いますが、外部と通信するアプリを作る場合に時々使うかと思います。

もちろん、これら以外の方法もあるかと思いますが、質問を受けたので僕が使っている方法を書いておきました。

 

String型 → byte配列

文字列(String)をバイト配列(byte [])へ変換する場合は、getBytes を使います。
char配列に変換するときはtoCharArrayですが、byte型はgetBytes
toとgetで統一感が無くて、少しややこしいですね。

例)

String str="ほげほげ";<br />
byte [] data = str.getBytes();

 

文字エンコードを指定する場合

String str="ほげほげ";<br />
<br />
try<br />
{<br />
    byte [] data = str.getBytes("SJIS");<br />
}<br />
catch (UnsupportedEncodingException e)<br />
{<br />
    e.printStackTrace();<br />
}

 

byte配列 → String型

バイト配列から文字列に変換する場合は、Stringのコンストラクタを使います。

例)

String str="ほげほげ";<br />
byte [] data = str.getBytes();<br />
<br />
String str2 = new String(data);<br />
Log.d("test","str="+str2);

 

文字エンコードを指定する場合

String str="ほげほげ";<br />
   <br />
try<br />
{<br />
    byte [] data = str.getBytes("SJIS");<br />
    String str2 = new String(data,"SJIS");<br />
    Log.d("test","str2="+str2);<br />
}<br />
catch (UnsupportedEncodingException e)<br />
{<br />
    e.printStackTrace();<br />
}

 

コメントする 2012年2月26日

Android 3.2のズーム機能について

Android 3.2 から、大画面(xlarge)に対応していないアプリの画面を拡大して表示する機能が搭載されたのですが、アプリの設定によっては、強制的にZoomモードになって、Stretch・Zoom が選べなくなる事があるのに気付きました。

色々試してみた結果、強制Zoomになる条件は

<uses-sdk>でminSdkVersionを指定していないか、3以下を指定している時に、
<supports-screens>でlargeScreens="true"を指定していない場合

つまり、なにも指定せずにプロジェクトを作っただけだと、強制的にZoomモードで表示されてしまうので、要注意です。(ま、そんなことはあまり無いのかもしれませんが)

強制拡大されて選択アイコンが無い状態
この画面は、強制的にZoomで表示されてStretch・Zoomの選択画面を開く為のアイコンが無い状態。

 

選択アイコンが出ている状態
先とおなじプロジェクトの、AndroidManifestに

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

を記述すると、このように選択用のアイコンが現れる。

 

ちなみに、選択用のアイコンは右下のこんなやつです。
zoom icon1

 

あと、Android 3.0 からは、<supports-screens>に xlargeScreens が指定できるようになっているので、これをtrue指定すると、強制的にStretchモードで表示されるようになる。(Android 3.1までと同じ状態)

device190 
先とおなじプロジェクトの、AndroidManifestに

<supports-screens android:xlargeScreens="true" />

を記述すると、 Stretch・Zoomの選択アイコンが消えて、Stretchモードで表示される。

 

コメントする 2011年7月20日

[TIPS]文字にドロップシャドウを付ける方法

実は TextView には影を付ける為のパラメーターが有るので、簡単にドロップシャドウが付けられます。

レイアウトでは

android:shadowColor 影の色
android:shadowDx 元の文字からの移動距離
android:shadowDy
android:shadowRadius ぼやけ具合

 

プログラムからは

TextView#setShadowLayer(float radius, float dx, float dy, int color)

で、ドロップシャドウを指定できます。

(続きを読む…)

2件のコメント 2011年4月9日

[TIPS]ImageViewで9patchを表示する方法

ImageView9patchのPNG画像のリソースを指定する場合、backgroundに指定すれば正しく伸びてくれるのですが、srcに指定してもうまく伸びてくれません。

ImageView なので background で代用しても問題無さそうなのですが、ウィジェット(appWidget)で使う場合は backgroundを簡単に変更出来ないので困りました。

  (続きを読む…)

コメントする 2010年11月14日

1 / 3123

Pages / 固定ページ

Category / カテゴリー

Recent Entries / 最近の投稿

Recent Comments / 最近のコメント

Tags / タグクラウド

おすすめのAndroid本