2012年8月22日水曜日

PayPalの本人確認

私が公開しているAndroid用の歩数計アプリWalkroidにはAdMob広告が張り付けてあって、ユーザーにクリックしてもらえればそれなりの広告費が入るようになっています。受け取りはPayPalで行っています。

この8月は最初の振り込みがある...はずだったんですが何と振り込みがPayPalに拒否されたとのこと。「なんでやねん!」と色々調べてみるといつのまにかPayPalでは「本人確認」という手順を踏まないとお金のやりとりができなくなっている...メールとかなんの連絡もなかったような...

そんなわけで愚痴をいってもしょうがないので、以下に私が行った本人確認手順を参考までに記しておきます。

・ログイン後最初の画面の右側の「通知」のところにある「本人確認」のリンクから開始。

・確認書類をスキャンして送信します。私は自動車の免許証。その場合裏面に記載が無くても必ず表面とともに送信しましょう。後で送ってくれと言われます。画像サイズが大きいと送信が拒否されますので、その場合は適当に縮小して送りましょう。

・他のサイトを見ると登録住所、氏名は日本語で書いてある必要があるとのことでしたが、私の場合は英語のままでOKでした。

・暗証番号を郵送したとのメールがきます。私の場合は8/18にメールがきて郵送されてきたのが8/22。簡易書留ですので郵便受けではなく直接うけとる必要があります。

・暗証番号を入力してめでたく制限解除。

さて次回AdMobの振り込みはうまくいくでしょうか...

2012年8月12日日曜日

Ubuntu(Linux)上での音再生の不具合

この一ヶ月強、UbuntuでBansheeとかで音楽を聞いていると1、2秒ぐらいの長さの部分を何度も繰り返す(DJとかがレコードをキコキコやるスクラッチみたいな感じ)不具合が多発してうんざりしていた。

OSをUbuntuからLinux Mintに切り替えてみたりしたのだが、不具合はなおらず。どうしたものかと思っていた。たまに不具合がなくなり安定する時もあるのだがそれがどういう条件でそうなるのか分からない。

Google Chrome上で動画を見ているときもやはり同じように繰り返しが起きたり、ひどいときには早回し再生のようになってまったく見れなくなる。ところがある時試しにFirefoxで見てみるとかなり安定して再生できる。

そうこうしているうちにChromeを立ち上げていないとBansheeなど音楽アプリでも不具合無く再生できることを発見。色々とググったり試行錯誤してみるとどうもChromeのFlashを無効に設定すれば不具合が消える様子。

どうもこれまではNetscape Plugin API(NPAPI)というAPI上でFlashを動かしていたのだが、最近はChrome独自?のPepper APIというAPI上に移行した様子。これが腐っているのではという感触。

とりあえずChromeはFlashを無効にしてFlashが必要なサイトはFirefoxで見るようにした。

2012年5月23日水曜日

minSdkVersion, targetSdkVersionとProject Build TargetのSDKバージョンの違い

Androidのアプリを作成する時にはManifestファイルに
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="7"/>
等のようにSDKのバージョン(APIレベル)を設定すると思います。
さらにビルドするときに使用する SDKのバージョンもあります。
これらの違いはよく混乱するので簡単に纏めておきます。

minSdkVersion
指定したバージョン以上のシステムでならアプリが動作することを示します。これ未満のバージョンのシステムにはアプリはインストールできません。
動作することを保証するのは開発者の責任です。使用しているクラス・メソッドのAPIレベルを確認し、必要なら対処しましょう。

targetSdkVersion
指定したバージョンより新しいシステムではコンパチビリティを保証するためtargetSdkVersionで指定したシステムと同じように動作するようになります。
例えばこの値を11未満(Android 3.0.x HONEYCOMB未満)にするとたとえAndroid 3.0.xのシステムでもデフォルトのテーマはこれまでの @android:style/Theme になります(forward-compatibility)。
11に設定していればAndroid 3.0.xのシステムではHONEYCOMBスタイルの @android:style/Theme.Holo が使用されます。他にもAction Barの使用やオプションメニューがなくなる等の影響がでてきます。
アプリを作成した場合はエミュレータや実機で動作を十分に確認すると思いますが、そこで確認したことが保証されるよう確認に使用したバージョンをここに指定しましょう。

Buildに使用するSDKのバージョン
EclipseならPackage ExplorerのProperties - Android - Project Build Targetで指定するSDKのバージョンです。
この値によってソースコードで使用できるクラスやメソッドが決まります。targetSdkVersionより大きい値も設定できます。その場合、使用しているクラス・メソッドのAPIレベルを確認し対処するのは開発者の責任です。

2012年1月14日土曜日

Android - Javaでの文字列から小数への変換

色々な国で使われるアプリだと小数点がコンマ(,)で表現されるところもあることを意識しましょう。主にヨーロッパとかロシア、南米ですね(参考)。

EditTextビュー等に入力された文字列を数値に変換する時に


String str = someEditTextView.getText().toString();
float v = Float.valueOf(str);

として値を取り出すとコンマが小数点だと認識されずに例外(NumberFormatException)が発生してしまいます。

小数点がピリオド(.)でもコンマ(,)でも正しく文字列を値に変換するには

String str = someEditTextView.getText().toString();
NumberFormat nf = NumberFormat.getInstance(); // デフォルトのロケールを使う
Number n = nf.parse(str);
float v = n.floatValue();

等としましょう。これならロケールに合わせてピリオドやコンマを正しく小数点と認識してくれます。

また値を入力するためのEditTextビューに

<EditText
    ...
    android:inputType="numberDecimal"
/>

と数字関係の文字のみ入力できるようにしている場合には

    android:digits="0123456789.,"

等と入力できる文字を指定してコンマも入力できるようにしましょう。