Androidアプリ開発したい!

IT屋がGalaxySを手に入れてからAndroidに興味が湧き、いろいろと開発したりしてます。 GalaxyNexusがメイン機となり、ようやく普及し始めたAndroid4.0への関心が高いです。 仕事では、iPhone向けとかのソシャゲ作ってます。

2012年04月

AndroidアプリでFacebookアカウントSSO認証ログインしちゃう

下記サイトを参考にしました。
基本的にこのサイトの内容で出来ると思いますが、
ちょいちょい翻訳臭がして手こずったので、
自分用のメモとして残します。




Step1.FacebookにAndroidアプリを登録する


①Facebookにログインして携帯電話かクレジットカードでアカウント認証を行う

アカウント認証しないとFacebook Developerでアプリ開発の許可が下りません。
とりあえず、私はDocomoのメールアドレスを封印(spモードメールアプリを無効にしている)しているので、
仕方なくクレジットカードを設定しました。
(APIの利用は、無料ですが本人認証のため仕方ないです)

②PHPかPerlかNode.jsか何にしますか?と聞かれるがどれでもいい
⇒今回はAndroidアプリ開発がしたいので、一番上のPHPにしました



Step2.Android SDKをダウンロードしてインストール


①すでにeclipseとか開発環境は整っているので省略。

②Gitもインストール済みなので省略

③場所はどこでもいいけどわかりやすいところ「C:\eclipse\facebook-api」フォルダを作成し、指定パス通りのクローンを作成
> git init
> git clone git://github.com/facebook/facebook-android-sdk.git

④実機使うのでAVDは作らない



Step3.新しいFacebook SDKプロジェクトの作成


①いつも通りプロジェクト作るとハマるので、ちゃんとみてください

赤枠:
いつもは新規プロジェクトですが、今回はFacebookのライブラリを作成するので、
先ほどGitHubからクローンしたソースを指定します。
なので、「外部ソースからプロジェクトを作成」を指定します。

青枠:
これは、たぶん自動で指定される?されなければ、Step2でgit cloneしたディレクトリの
「facebook-android-sdk\facebook」を指定してください。

705ea0ba.png



Step4.FacebookのSDKへの参照を追加する


①後はFacebookライブラリを使いたいAndroidプロジェクトのプロパティのAndroidライブラリに指定してあげます。

fc3eee8d.png


エラー出なければ問題ないはず。



Step5.Facebookアプリの設定に、アプリケーション署名を追加する


署名作成にopenSSLが必要です。
今回はWindowsの例です。
※ちなみに私はWindows7 32bitです。

OpenSSLにはActivePerlが必要らしいです。


①ActivePerlのインストール(http://www.activestate.com/activeperl/downloads)

cbc31c73.png



②Windows用OpenSSLのインストール(http://slproweb.com/products/Win32OpenSSL.html)
(キャプチャではチェックついてますけど、私はチェックを外してFinishしました)

cfffd6a8.png


インストールできたら環境変数のPATHを追加
「C:\OpenSSL-Win32\bin」


③コマンドプロンプトで今度こそkeyHashの作成

※コマンドはこちら「keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

7aca796d.png

さっきまでうるさかった「openSSLが~」ってエラーはでなくなりました。


④「③」で作成したキーハッシュとライブラリを利用するパッケージ名、クラス名をFacebookDeveloperに登録

a9219706.png





Step6.アプリケーション用シングルサインオン(SSO)を有効にする


①AndroidManifest.xmlに「<uses-permission android:name="android.permission.INTERNET"/>」を追加

e99b810d.png


ソースコードはとてもシンプルです。



しかし、起動しても一瞬Facebookっぽい画面が割りこまれるだけでうまく動かなかった・・・
他の端末にインストールしてやってみたらうまく動い方ので、もしかしたらと
Facebookのアプリをアンインストールしたらちゃんと動きました。
(おそらくIntentFilterとかで割り込まれてる?)

ライブラリのパッケージ名とか変えたらうまく動くのだろうか。。。?
真面目にFacebookと連携するアプリを作るならちゃんと調査しないとダメですね。


0244abac.png


9fb1df04.png



とりあえず、起動できたら今回は以上です!!!
疲れたー
2-3時間くらいかかった気がする。

[結果]
FacebookのAPI申請して
Androidからシングルサインオンでログイン認証して、
特定の情報(メールアドレスとかチェックイン投稿許可)とかを扱う確認ダイアログの表示まで成功。


なんかほかにもPHPとかRubyとかnode.jsでも開発できるっぽいし
ちょいちょい遊んでみようかね。




eclipseでandroidプラットフォームのソースを参照、デバッグする


SDK14と15ならSDKManagerでダウンロードできるので、
ばっちりAndroidプラットフォーム側のソースが読めます。

c1b3ca72.png



7c46dafe.png

さっきまではこのように
publicで公開されているメソッドのインターフェースくらいしかわからなかったが。。。


e1b91373.png

このようにばっちり読めます。
ちなみに私、英語は読めなくはないけど、
とても時間がかかります。

ぶっちゃけコメントやjavadoc読むよりも
ソースコード読んだ方が早かったりします。

もちろん普通にブレークポイント貼ればデバッグできますので、
プラットフォーム側の処理フローを追うのもいいかもしれませんね。

作業時間管理アプリ(Android4.0以降向け)その5 -SQLite編-

今回は、SQLiteを使って作業時間をデータベースに保存します。

SQLite(えすきゅーらいと)・・・アプリケーションに組み込んで利用する計量のデータベース。

以前に電話帳のアプリ作ったときにSQLite自体は扱ったのですが、
ちゃんと理解してなかったのと、正直あまり覚えてないので復習します。

主な特徴
  • RDBMSと異なりサーバ型ではないため、ログインIDやパスワードなど不要
  • プレリファレンス(※1)と同様にファイルでデータベースを管理しているため、バックアップが容易
※1 Android端末の内部の記憶媒体にMapのようにキーと値という組み合わせで、
XMLファイルとしてデータを保存する仕組み


保存されるディレクトリとファイル名
  • ディレクトリ:/data/data/<パッケージ名>/databases
  • ファイル名:アプリケーションで指定した名前

まずSQLiteOpenHelperが抽象クラスなので、継承したクラスを用意する。



作ったヘルパークラスをActivityのonCreateでインスタンス化して、
データベースをオープンする。




【ON/OFFの操作合わせて6回】

d17dde36.png


【まずディレクトリを端末側のTerminalアプリで確認】

1b1aa8a1.png

ちゃんと格納されているようだ。
サイズは5120バイトか。
※ちなみにターミナルでこのディレクトリを参照するにはroot化が必要です。


でも、eclipseなら参照できます。
あとデータベースファイルをダウンロードすることはできます。

【eclipseのDDMSでのファイルエクスプローラー】

513e3066.png


【ダウンロードしたファイルをSQLiteのViewerで確認】

67ee6ecc.png

1ab1f9dc.png


ばっちりINSERTされてますね。
以前よりしっかりAndroidでのSQLiteの扱いを理解できた気がする。
ツールも便利だし。
しかし、そもそもなSQLiteについて学んでおく必要もあると気づいた。


後は、このテーブルの内容を参照する画面を作る感じで、
機能的な完成は見えてきた。
レイアウトやデザイン面、システム設定などまだまだ課題は多いが・・・


持ってる端末
・Galaxy S root化済    (2.3.6)
・Galaxy Nexus          (4.1.1)
・GALAPAGOS A01SH (4.0.4)
・ONDA Vi10              (4.0.3) 
・iPod Touch           (iOS 6.0)
記事検索
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

  • ライブドアブログ