2013年7月9日火曜日

Navigation DrawerをActionBarSherlockで使ってみたい(デザインガイド非準拠)・・・コンテンツ操作用を作成

前々回記事(リンク)前回記事(リンク)の続きです。

 

前回までのあらすじ

前回のラブライブ!
ついにスクールアイドルとしてはじめてのライブに挑むことになったニクニクと(ry

以下本編

何回かに分けてNavigationDrawerを触ってきましたが、本来の目的は
  「NavigationDrawerを右だししてコンテンツ操作用にカスタマイズしたDrawerが欲しい」
でした。
今回は、そのドロワー作成をしましたという記事。

その前にナビゲーションドロワーとは?

NavigationDrawerのガイド(リンク)を見たところ、その特徴としては

  • ドロワーを出せるときはアップナビゲーションアイコンをドロワー有り表示とする
  • 画面外からの操作(左からエッジスワイプ)で表示できること
  • アップナビゲーションアイコンからドロワーを呼び出せること
  • ドロワー表示中はアイコン、アクセシビリティの表示を変更すること

などがあります。

→このあたりはテクブさんの記事(リンク)がとても参考になります!

コンテンツ操作用のドロワーとしてはどうするか?

ActionBarDrawerToggle.javaやDrawerLayout.javaを見ればわかりますが、安易に右だしするのはやめて!という意図が伝わってきます。
ユーザーを混乱させるなということですよね。
じゃぁどうするかですが、上記のNavigationDrawerの特徴をはずしていけばいいのかなということで以下の対処をしてみます。

  • アップナビゲーションアイコンの表示を変更しない
  • 画面外からの操作(エッジスワイプ)で表示させない
  • アップナビゲーションアイコンから呼び出させない
  • ドロワー表示中はアイコン表示を変更しない(アクセシビリティの表示はお好みで

 

実行時画面

ContentDrawer選択して、ボタン選択で、右だしドロワー表示まで。

image image image

 

実装サンプル

上記対応を行ったサンプルをGitHubにあっぷしておきました。
参考にどうぞ。

https://github.com/miquniqu/AbsNavigationDrawerSample

前回からの変更箇所はこちら

https://github.com/miquniqu/AbsNavigationDrawerSample/commit/94b4ebdcf929c7fd3b9c9fc21deca2f5b5cb8681

 

修正したソースの概要

ActionBarContentDrawerToggle.java
→ActionBarDrawerToggle.javaをベースにコンテンツ用にアイコン操作を削除、ドロワー呼び出しとしてpublic void toggleDrawer()追加

ContentDrawerLayout.java
→DrawerLayout.javaをベースにエッジスワイプ操作を削除(setEdgeTrackingEnabledをコメント化しただけ

ContentDrawerActivity.java
→サンプルアプリから、ドロワー呼び出し方法としてボタン追加
※FragmentからActivityのドロワー呼び出しするにはyanzmさんの記事(リンク)が参考になります。

 

NavigationDrawerがらみはこれでおわり!

2013年7月7日日曜日

Navigation DrawerをActionBarSherlockで使ってみたい(デザインガイド非準拠)・・・その後

 

前回記事(リンク)の続きです。

 

前回までのあらすじ

妖精の森エクレアで安穏と暮らしていたニクニクは、異世界でえろい人が開発した武器ナビゲーションドロアーが楽しそうといううわさを耳にした。
しかし、ニクニクの愛車アクションバーシェーロック号にはそのナビゲーションドロアーが搭載できない。
こまったニクニクはいつものように(検索)窓に向かって「ナビゲーションドロアー!ナビゲーションドロアー!」と連呼していたところ、「パッチを感じるんだ」と神の声が聞こえてきた。
ニクニクは恐れながらも声のする方向へ歩いていくと、そこには恐るべき試練が待ち受けていたのであったニク。

 

本編

前回助けてっていってた件が暫定自己解決したのでその内容をうpしときます。
よくわかってない部分だれか教えてくれたらいいと思います。

 

何を変えたか

以下、見てきてください。

API7で動作版
android:attrの利用を直接指定とする
invalidateOptionMenu→supportInvalidateOptionMenuに変更
https://github.com/miquniqu/AbsNavigationDrawerSample/commit/80aff00c0567aa2a0d371f527e0eb8bdc8aac674

 

修正箇所の説明1

DrawerActivity.java

  1:              public void onDrawerClosed(View view) {
  2:                  getSupportActionBar().setTitle(mTitle);
  3: -                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
  4: +                supportInvalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
  5:              }
  6: 

→invalidateOptionsMenuをsupportInvalidateOptionsMenuに変更しわすれてたので一応。


 


修正箇所の説明2


drawer_list_item.xml


  1: <TextView xmlns:android="http://schemas.android.com/apk/res/android"
  2:     android:id="@android:id/text1"
  3:     android:layout_width="match_parent"
  4:     android:layout_height="wrap_content"
  5:     android:textAppearance="?android:attr/textAppearanceListItemSmall"
  6:     android:gravity="center_vertical"
  7:     android:paddingLeft="16dp"
  8:     android:paddingRight="16dp"
  9:     android:textColor="#fff"
 10: -    android:background="?android:attr/activatedBackgroundIndicator"
 11: -    android:minHeight="?android:attr/listPreferredItemHeightSmall"/>
 12: +    android:background="@drawable/abs__activated_background_holo_dark"
 13: +    android:minHeight="48dp"/>
 14: 

これが正直よくわからない。
android:attrはテーマで設定している属性値を利用するってことで、今回利用しているActionBarSherlockのテーマでも、

  1: <style name="Theme.Sherlock" parent="Sherlock.__Theme">
  2:   ~
  3:   <item name="activatedBackgroundIndicator">@drawable/abs__activated_background_holo_dark</item>
  4: 

と宣言されている。
今回の対処は、テーマ属性経由ではなく、abs__activated_background_holo_darkを直接指定するように変更したら
そのセレクターで指定しているres/drawable-hdpi/abs__ic_ab_back_holo_dark.pngが読み込めるようになったというもの。


うーん。。


ともあれ、パッチが適用されたActionBarSherlockに追加修正することなくAPI7~17で利用できたのでよしとしよう。


[2013.07.07 追記]
なんておもってたのだけれど、sdk\extras\android\support\samples\Support4Demosにあるサンプルソースでは、
android.R.layout.simple_list_item_1を利用していたのでdrawer_list_item.xmlのカスタムレイアウトはやめて、
こっちに変更することにしました。


パッチ入手先とか



Android : Navigation Drawer をActionBarSherlockで使う
http://d.hatena.ne.jp/esmasui/20130606/1370517111
https://github.com/esmasui/ActionBarSherlock/commits/ActionBarDrawerToggle
※ABS4.2.0へのぱっち


上記ブログであげられてる4.3.1のパッチ?
https://github.com/ianhanniballake/ActionBarSherlock

今回の修正をいれたサンプルアプリ
https://github.com/miquniqu/AbsNavigationDrawerSample


おわり。

2013年7月1日月曜日

Navigation DrawerをActionBarSherlockで使ってみたい(デザインガイド非準拠)

けど失敗したのでだれか助けて(*´^`*)
という話です。

参考記事

参考にしたのはこのあたりの記事です。

Android : Navigation Drawer を使う
http://y-anz-m.blogspot.jp/2013/05/android-navigation-drawer.html

Android : Navigation Drawer をActionBarSherlockで使う
http://d.hatena.ne.jp/esmasui/20130606/1370517111

[Android] Navigation Drawerを画面上側から表示させる
http://lily-light.blogspot.jp/2013/06/android-navigation-drawer.html

 

やったこと

1、yanzmさんの記事を元にしたesmasuiさんのupしてるパッチ入りActionBarSherlockをベースにサンプル作成
→API 17だとうまくいくけど、API7、10で例外

2、lilylightさんの記事、githubソース(Vertical系)も取り込んで、Horizonも追加してみた

追加ソース
src/com/actionbarsherlock/custom/app/ActionBarHorizonDrawerToggle.java←esmasuiさんのソースへlilylightさんの差分追加
src/com/actionbarsherlock/custom/app/ActionBarVerticalDrawerToggle.java←上記を参考に修正
src/com/actionbarsherlock/custom/widget/VerticalDrawerLayout.java←lilylightさんの差分追加そのまま
src/com/actionbarsherlock/custom/widget/HorizonDrawerLayout.java←上記を参考に修正

→結局一緒。

やりたかったこと

ほんとうにやりたかったことは、ActionBarのアイコンは変更せず(Navigationぽく感じるので)に、
コンテンツ操作時にそのメニューをRIGHTかBOTTOMあたりにスライド移動以外のアニメーションで
Drawer表示かつ、複数Drawer切り替えみたいなことをしたかったんだけど。。ぐぬぬ。

実装サンプル

できてない版としてGitHubにあっぷしておきました。
lilylightさんの記事にもありますが、デザインガイド非準拠なので、利用は要検討。

https://github.com/miquniqu/AbsNavigationDrawerSample

 

できてること

API Level 17 のAVDで一通り操作できる。

・メニュー/デフォルト
image image

・Horizon LEFT/Horizon RIGHT
imageimage

・Vertical TOP/Vertical BOTTOM
image image

 

できてないこと

API Level 10、7 のAVDでandroid.view.InflateException。

image 

以下LogCat

06-30 23:32:44.912: E/AndroidRuntime(219): Uncaught handler: thread main exiting due to uncaught exception
06-30 23:32:44.962: E/AndroidRuntime(219): android.view.InflateException: Binary XML file line #17: Error inflating class <unknown>
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.LayoutInflater.createView(LayoutInflater.java:513)
06-30 23:32:44.962: E/AndroidRuntime(219):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:332)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.AbsListView.obtainView(AbsListView.java:1274)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.ListView.makeAndAddView(ListView.java:1668)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.ListView.fillDown(ListView.java:637)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.ListView.fillFromTop(ListView.java:694)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.ListView.layoutChildren(ListView.java:1507)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.AbsListView.onLayout(AbsListView.java:1113)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.View.layout(View.java:6830)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:672)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.View.layout(View.java:6830)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.View.layout(View.java:6830)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.View.layout(View.java:6830)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.View.layout(View.java:6830)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.View.layout(View.java:6830)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.ViewRoot.performTraversals(ViewRoot.java:996)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.os.Looper.loop(Looper.java:123)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.app.ActivityThread.main(ActivityThread.java:4363)
06-30 23:32:44.962: E/AndroidRuntime(219):     at java.lang.reflect.Method.invokeNative(Native Method)
06-30 23:32:44.962: E/AndroidRuntime(219):     at java.lang.reflect.Method.invoke(Method.java:521)
06-30 23:32:44.962: E/AndroidRuntime(219):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-30 23:32:44.962: E/AndroidRuntime(219):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-30 23:32:44.962: E/AndroidRuntime(219):     at dalvik.system.NativeStart.main(Native Method)
06-30 23:32:44.962: E/AndroidRuntime(219): Caused by: java.lang.reflect.InvocationTargetException
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.TextView.<init>(TextView.java:320)
06-30 23:32:44.962: E/AndroidRuntime(219):     at java.lang.reflect.Constructor.constructNative(Native Method)
06-30 23:32:44.962: E/AndroidRuntime(219):     at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.LayoutInflater.createView(LayoutInflater.java:500)
06-30 23:32:44.962: E/AndroidRuntime(219):     ... 35 more
06-30 23:32:44.962: E/AndroidRuntime(219): Caused by: android.content.res.Resources$NotFoundException: File res/drawable-hdpi/abs__ic_ab_back_holo_dark.png from drawable resource ID #0x0
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.content.res.Resources.loadDrawable(Resources.java:1710)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.content.res.TypedArray.getDrawable(TypedArray.java:548)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.view.View.<init>(View.java:1850)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.widget.TextView.<init>(TextView.java:326)
06-30 23:32:44.962: E/AndroidRuntime(219):     ... 39 more
06-30 23:32:44.962: E/AndroidRuntime(219): Caused by: java.io.FileNotFoundException: res/drawable-hdpi/abs__ic_ab_back_holo_dark.png
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.content.res.AssetManager.openNonAssetNative(Native Method)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.content.res.AssetManager.openNonAsset(AssetManager.java:390)
06-30 23:32:44.962: E/AndroidRuntime(219):     at android.content.res.Resources.loadDrawable(Resources.java:1702)
06-30 23:32:44.962: E/AndroidRuntime(219):     ... 42 more

2013年3月3日日曜日

SQLiteでALTER RENAMEしたときのINDEX動作確認

先日「あにすと」のアプデして失敗したので、そのメモです。

■失敗内容

前回の記事で、DBのマイグレーションだーってことで、

SQLiteOpenHelper でテーブルカラム変更時にデータを引き継ぐ
http://www.ecoop.net/memo/archives/2011-01-28-1.html

を参考に元テーブル名を変更後、新規テーブルを作成してINSERTしなおすという対応したのですが。
実は、当該テーブルはKEYこそ変わらないものの、UNIQUE INDEXを設定していてその考慮が漏れてました。

簡単に絵にするとこんな感じ。

image

まぁ、マイグレーション自体もそうだし、実施後でも2重登録されない確認テストコード書いておけばよかったろって話に尽きます。
この状態でTABLE BにINSERTすると、ちゃんとUNIQUE INDEX効くのですよね。
いや、もちろんRENAME+新テーブル作成したら前のINDEXがそのまま利用できると思っていたわけじゃないですが。

■というわけで。。

今リリース中の「あにすと」でストリームログ→ストックログへコピーを繰り返すと、その回数分ツイートが増えていきます。
1800件あるストリームログだと2回で3600件になります。お得ですね。てへぺろ(・ω<)

■あと

動作確認のために簡単なプロジェクト作って登録しておきました。

Tips04 SQLiteでTABLE RENAME時のINDEXとON CONFLICTの動作確認
https://github.com/miquniqu/AndroidTips/tree/master/Tips04

device-2013-03-03-164933

参考までにどうぞ。

2013年2月24日日曜日

「あにすと」の更新しました。(主にTwitter API v1.1対応)

いつもは更新のたびにブログ書いたりしませんが、TwitterAPI v1.1対応するにあたり参考にした情報とかあったのでまとめておきます。

■ダウンロード先

肝心のダウンロード先はココ!

あにすと - アニメ番組表&実況ストリーミング
https://play.google.com/store/apps/details?id=com.miquniqu.animestreamfree

■参考にした情報一覧

今回の変更にあたり、各ライブラリを利用、情報を参考にしました。

これがないと始まらない。Twitter4Jのライブラリ
http://twitter4j.org/ja/index.html

悪m、必ず目を通さないとなTwitter本家のDeveloper Display Requirements
https://dev.twitter.com/terms/display-requirements

とその日本語訳に取り組んでる方々
Developer Display Requirementsを日本語訳してみた
http://abcang.hotcom-web.com/wordpress/?p=123
TwitterAPI/v1.1
http://www.srcw.net/wiki/index.php?TwitterAPI%2Fv1.1

birdロゴの配布元。Twitterの商標およびコンテンツの表示ポリシー
https://twitter.com/logo

以下、ツイート表示方法の参考

レイアウトXMLの参考に、

Android再入門 - Twitterクライアントを作ってみよう - 目次
http://qiita.com/items/70689560618f8e67e726
※の、タイムラインを表示のあたり
※「Android Smart Image View」のライブラリは便利そうだなと思ったけど、諸事情で使ってません。

デザイナーがコードから読み解く、Androidアプリのデザインの幅を広げるコツとTips
http://www.ladybeetle-design.com/androidappdesigns/
※第1回と第2回のあたり

イメージ画像の角丸画像化に

Androidでリソースの画像を角丸に変換するやり方メモ
http://d.hatena.ne.jp/lagos_on/20100709/1278695834

あとは、SQLiteの簡単なマイグレーション方法。

SQLiteOpenHelper でテーブルカラム変更時にデータを引き継ぐ
http://www.ecoop.net/memo/archives/2011-01-28-1.html

■今後の対応

個別機能としては欲しいものはそろった気がしているので、あとは見た目、設定項目、安定動作(スクラッチでテストも考慮して作り直したほうがいいような、、、)てあたりに手をつけていきます。
そのあたりでバージョン1.0?

そこから先は無償じゃなくなるかもなーとか。手法は未定ですががが。
今の機能でアクティブ1000超え程度のアプリに広告入れてもなぁとは思うわけで、そういう意味では本当に自分の欲しいものを実装してる現状です。

2013年1月9日水曜日

もくもくAWS:AWS SDK for Androidを触ってみた(IdentityTVM編)

サンプル触ってブログ書くだけの仕事最終回。
IdentityTVMを利用したAWSアクセスデモアプリを触ってみます。

■参考にするスライドとか記事とか

作業手順は前回と同じですが、一応貼り付けておきます。

AWS SDK for Android and iOS
http://www.slideshare.net/AmazonWebServicesJapan/aws-sdk-for-android-and-ios

@ITスマホ×クラウド連載 第2回 AWS×Android:補足記事(2)Token Vending MachineとSecurity Token Service
http://dev.classmethod.jp/cloud/atmarkit_smartphone_cloud_02_supplement_02/

■IdentityTVMの公開サイト

以下のサイトでIdentityTVMとその設定方法が記載されているのでこのとおり進めます。

Token Vending Machine for Identity Registration - Sample Java Web Application
http://aws.amazon.com/code/7351543942956566

■TVMの用意

とにかく記事どおり、進めていく。

・TVM ZIPファイルのダウンロード
・TVM用のIAMユーザーを作成する
・AWS Elastic Beanstalkアプリケーションの作成
・Configureの設定
AnonymousTVMと違うのがここです。
PARAM1にさっき作成したアプリケーション名を設定します。
(※追記:と思ったけど、TVM側とAndroidアプリ側のアプリケーション名があっていればいいだけかも。)

image

・TVM Androidデモアプリケーションを実行する
ここも、AnonymousTVMとは異なり、アプリケーション名をAwsCredentials.propertiesに定義します。

  1: 
  2: # This is the App Name you may have provided in the AWS Elastic Beanstalk 
  3: # configuration.  It was the value provided for PARAM1.  If no value was 
  4: # provided it should be defaulted to "MyMobileAppName".
  5: appName=IdentityTVM
  6: 
  7: 

起動した画面が以下です。


起動~ブラウザー表示まで。


device-2013-01-09-230958device-2013-01-09-231044device-2013-01-09-231107


ユーザ登録~成功まで。


device-2013-01-09-231126device-2013-01-09-231236device-2013-01-09-231256


再度起動~再度ログイン操作まで


device-2013-01-09-230958device-2013-01-09-231101device-2013-01-09-231343


ログイン後、DB表示まで


device-2013-01-09-231409device-2013-01-09-231438


で、ユーザ登録されたSimpleDBのデータがこれ。


image


とりあえず動作確認完了です。


■とりあえずまとめ


これで、とりあえずはAndroidアプリからユーザ登録画面をブラウザ表示して、登録し終わったらそのユーザで認証できる仕組みの確認ができました。888.
実際アプリに使うには、SSLの設定、ユーザID衝突時の仕組みやら、まぁあれこれやることありそうですが。おいおいやっていきます。


Twitter認証連携で簡単にできないかなー。
メアドとか管理したくないんだよなぁ。

もくもくAWS:AWS SDK for Androidを触ってみた(AnonymousTVM編)

前回に引き続きのAWSです。
今回はAnonymousTVMを利用したサンプルデモアプリの動作確認。
前回まではアプリ内にキーを埋め込んでてアレだなーといった感じでしたが、

■参考にするスライドとか記事とか

イカでげそ。

AWS SDK for Android and iOS
http://www.slideshare.net/AmazonWebServicesJapan/aws-sdk-for-android-and-ios

@ITスマホ×クラウド連載 第2回 AWS×Android:補足記事(2)Token Vending MachineとSecurity Token Service
http://dev.classmethod.jp/cloud/atmarkit_smartphone_cloud_02_supplement_02/

二つ目の記事はまさにそのままの手順で実行しているので、基本このとおり確認します。

■TVMの用意

とにかく記事どおり、進めていく。

・TVM ZIPファイルのダウンロード
・TVM用のIAMユーザーを作成する
・AWS Elastic Beanstalkアプリケーションの作成

AWS Management Consoleを開き、(一番左の)Elastic Beanstalkタブを開く。
「Launch Application」ボタンをクリックする。すでにBeanstalkアプリがある場合は、右上の「Create New Application」ボタンで開始する。

とあるけど、刷新されたのかそんな画面はない。

image

一番右のCustomizeを選択して「Start」を押す。
あとはそのまま進める。

この際、「Environment URL」を「http://xxx-xxxxtvm.elasticbeanstalk.com」といった形式にしたら「Response contains invalid JSON」が発生して作成できなかった。長すぎるか、ハイフンが悪いのかなということで短め・ハイフンなしにしたところ通りました。真相は不明ですが。誰かおせーて?

image

この後、「Environment URL」にアクセスしたらこうなった。

image

「SSL」はおいといて、「is not properly configured」?

この文字列を吐き出しているJSPでは、

  1: 		<% if( Utilities.isEmpty(Configuration.AWS_ACCESS_KEY_ID) || Utilities.isEmpty(Configuration.AWS_SECRET_KEY) ) {%>
  2: 		<p class="warning">Warning: Your Token Vending Machine is not properly configured.</p>
  3: 		<%} %>
  4: 

となっていて、判定値であるConfigurationクラスは

  1: 	/**
  2: 	 * The AWS Access Key Id for the AWS account from which to generate sessions.
  3: 	 */
  4: 	public static final String AWS_ACCESS_KEY_ID = System.getProperty( "AWS_ACCESS_KEY_ID" );
  5: 	
  6: 	/**
  7: 	 * The AWS Secret Key for the AWS account from which to generate sessions.
  8: 	 */
  9: 	public static final String AWS_SECRET_KEY = System.getProperty( "AWS_SECRET_KEY" );
 10: 

となっていた。
取得できてないのはわかるけど、どこで設定するんだーとTVMをDownloadしたサイトみてたらちゃんとかいてあった。(よく読め。



Token Vending Machine for Anonymous Registration - Sample Java Web Application
http://aws.amazon.com/code/8872061742402990
「Configure the TVM for your application」のあたり


 


image


できた!


・TVM Androidデモアプリケーションを実行する


device-2013-01-09-043213


登録されたデバイス情報


image






動いたっぽいですね。


■とりあえずのまとめ


サンプル実行しただけですが、SSL周りほったらかしですが。
これでようやくアプリに認証キーを保管せずにアクセスできるようになりました。
やったー。次は念願のIdentityTVMです。

もうちょっとだけ続くんじゃよ。