ARをいじってみたいなぁ、と思ったので、紹介されていたQualcommのAR SDKを入れてみました。
ところどころ詰まったので、自分用にメモ。
こちらのサイト様を参考にしました。ありがとうございます。
http://d.hatena.ne.jp/kotamz/20101031/1288534811
1.まず以下のインストール。
・Android SDK/NDK
自分はSDKは入ってたので、NDKだけインストールしました。
現在の最新版は、Android NDK r5
適当にインストールしてパスを通して完了。
2.次にQualcommのサイトにて、SDKをダウンロード
https://ar.qualcomm.com/qdevnet/sdk
現在のバージョンは qcar-sdk-0.10.0.zip
上記の右上にLoginがあるので、そこから新規登録の必要あり。
(なぜか間違えて、//developer.qualcomm.com/dev/androidから登録したら、
Developper用のアカウントになってAR SDKは落とせなかった。なんてこった。)
3. DSOのコンパイル
ダウンロードしたら、Android NDKでコンパイル。
※qcar-sdk-0.10.0だと、Sharedってフォルダはなくて、
代わりに以下になってた。
$ CD /Users/ユーザ名/Development/Android/qcar-sdk-0-10-0/
samples/Dominoes
で、Android NDKでコンパイルするんですが、
$ ndk-build
としたところ、以下のエラーが出ました。
cannot find -lQCAR
調べてみたら、MACだと変更しないといけないところがあるらしいです。
以下のサイト様に解決方法が載ってました。
http://kopanitsa.seesaa.net/article/178887188.html
Android.mkの中身を書き換えて、再度 $ ndk-build したところ、
今度は正常にコンパイルできました。
4.Eclipseで実際に動かしてみる。
参考のサイト様では、Androidの新規プロジェクトを作成していますが、
インポートすることでサンプルを読み込むことが出来ます。
Eclipseで以下をインポート
/Users/ユーザ名/Development/qcar-sdk-0-10-0/samples/Dominoes
MACの場合インポートしたあとに、
Dominoesのプロジェクトを右クリック->プロパティー->ビルダーで、
Import QCAR(win)のチェックを解除し、Import QCAR(bash)をチェックする。
プロジェクト > クリーン で実行。
この時に、一旦エラーが出てたましたが、クラスパスに
QCAR_SDK_ROOTという変数を追加したらちゃんと動くようになりました。
下がドミノを動かしてみたところです。
2011年1月13日木曜日
2010年12月15日水曜日
[android]ListViewを2列表示にする方法
今まで、ListViewを使用してViewの表示をしていたのですが、
横向き表示の時には2列にしたいと思って方法を探してました。
調べてみると、GridViewっていうのがあるみたい。
参考にさせていただきました。
hyoromoの日記-GridViewを使ってみたよ
使い方は、ListViewとほとんど同じで、
1.Adapterを用意 (ListViewで使ってるので使い回し可能!)
2.GridViewの用意
3.GridViewにAdapterを設定
でいいらしい。
ということでListViewとGridViewの記述の違いだけをメモメモ。
ListViewとGridViewの/layout-land/main.xmlの違い
srcの違い(のある部分だけ)
と変更した箇所はたったこれだけで、横表示の時に2行にすることが可能になりました!
ちなみに、縦表示は1行のままにしたいので、
GridViewの android:numColumns="1"とすることで、縦表示は1行にできました!
横向き表示の時には2列にしたいと思って方法を探してました。
調べてみると、GridViewっていうのがあるみたい。
参考にさせていただきました。
hyoromoの日記-GridViewを使ってみたよ
使い方は、ListViewとほとんど同じで、
1.Adapterを用意 (ListViewで使ってるので使い回し可能!)
2.GridViewの用意
3.GridViewにAdapterを設定
でいいらしい。
ということでListViewとGridViewの記述の違いだけをメモメモ。
ListViewとGridViewの/layout-land/main.xmlの違い
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!--ListViewの場合はこっち--> <ListView android:id="@+id/list" android:layout_width="wrap_content" android:layout_height="wrap_content"> </ListView> <!--GridViewの場合はこっち--> <GridView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="2" android:stretchMode="columnWidth" android:gravity="center" /> </LinearLayout>
srcの違い(のある部分だけ)
// ListView listView; GridView gridView; // listView = (ListView) findViewById(R.id.list); gridView = (GridView) findViewById(R.id.list); //listView.setAdapter(mAdapter); gridView.setAdapter(mAdapter);
と変更した箇所はたったこれだけで、横表示の時に2行にすることが可能になりました!
ちなみに、縦表示は1行のままにしたいので、
GridViewの android:numColumns="1"とすることで、縦表示は1行にできました!
2010年11月25日木曜日
[google calendar]繰返し登録方法
Googleカレンダーでイベントを繰り返し登録する方法を探したところ、
以下の話題がありました。Google calendar API での繰り返しスケジュールの取得
"RRULE:FREQ=WEEKLY;..." といった形式で繰返しが登録できるとのこと。
詳しいフォーマットとしては、色いろあるようで
FREQ=DAILY/WEEKLY/YEARLY (毎日/週ごと)
BYDAY=MON/FRI (曜日指定)
INTERVAL=2 (間隔)
これらを組み合わせて、以下の設定が可能。
隔週月曜日
FREQ=WEEKLY; INTERVAL=2; BYDAY=MON;
毎年最終月曜日
FREQ=YEARLY; BYDAY=-1MON; (-1で最終〜になる)
で、今回は毎年同じ日に登録したい場合は、単純に以下だけ。
FREQ=YEARLY;
で、ここから例えば、何年間だけ同じ日に登録したいときは
どうするのか?
方法は2つあるみたいですが、片方しか試してないので、
とりあえずわかった方を記載しておきます。
■UNTILを使う方法
以下のように記載するとどうやら2015年1月1日まで
繰り返し登録することが可能みたい。
FREQ=YEARLY UNTIL=20150101;
以下が実際に書いたコード
ContentValues values = new ContentValues();
ContentResolver cr = this.getContentResolver();
values.put("calendar_id", calId);
values.put("title", title);
values.put("allDay", 1);
values.put("dtstart", startDay);
values.put("dtend", endDay);
values.put("rrule", "FREQ=YEARLY;UNTIL=20150101T010000Z");
values.put("duration", "P1D");
cr.insert(events, values);
rruleで、2015年まで毎年登録。
durationは設定しておかないとエラーになってしまいますが、
なぜ必要なのかはまだ不明です…
■COUNTを使う方法
こちらの方法でもいけるのかな?未確認です。
2010年11月17日水曜日
[android]連絡先から誕生日をGoogleカレンダーに登録するアプリ「Birth2Cal」1.0.1公開しました。
marketに公開中のアプリ「Birth2Cal」のバージョンアップしました。
ちょっと紆余曲折ありまして、アプリを再度登録しなおしております。
■旧 Birth2Calからver.1.0.1の変更点
・ユーザのリスト表示がふりがなソート順になりました
・誕生日だけでなく、記念日も表示しました。
・アイコンが透過できていなかったのを修正。
・実はandroid2.2 のみから2.1も対応。
(但し、動作確認は出来ておりません。)
■今後の対応予定
・現在、カレンダーへの登録が1年分しか行っていないため、
繰り返し登録年数の設定
・アプリ起動時の読込み時、2〜3秒かかっているため、
「読込中」などの表示をつける。
・登録完了時のダイアログに[OK]ボタンの設置
となっております。
不具合、要望等ありましたらコメント等いただければと思います。
2010年11月16日火曜日
[android]ふりがなソートについて
連絡帳から情報をリスト化するときに、よくありがちな
「ふりがなでソートがしたい」のメモです。
managedQuery()メソッドを使用してリスト表示していました。
ふりがなソートを行うにあたり以下の情報で、
苗字/名前のふりがなが参照できます。
android.provider.ContactsContract.CommonDataKinds.StructuredName
PHONETIC_FAMILY_NAME
PHONETIC_GIVEN_NAME
それそを以下のsortOrderで指定すればソート完成!
managedQuery(uri,projection,selection,selectionArgs,sortOrder)
となるのですが、ふりがな情報と、別のクラスの情報を選択して表示する場合、
selection で設定ができませんでした。
よく見てみると、それぞれのクラスには「CONTACT_ID」データがあるので、
それを使えば他のクラスのデータと関連した選択が可能になるらしい。
以上を踏まえた結果、以下のコードのようになりました。
「ふりがなでソートがしたい」のメモです。
managedQuery()メソッドを使用してリスト表示していました。
ふりがなソートを行うにあたり以下の情報で、
苗字/名前のふりがなが参照できます。
android.provider.ContactsContract.CommonDataKinds.StructuredName
PHONETIC_FAMILY_NAME
PHONETIC_GIVEN_NAME
それそを以下のsortOrderで指定すればソート完成!
managedQuery(uri,projection,selection,selectionArgs,sortOrder)
となるのですが、ふりがな情報と、別のクラスの情報を選択して表示する場合、
selection で設定ができませんでした。
よく見てみると、それぞれのクラスには「CONTACT_ID」データがあるので、
それを使えば他のクラスのデータと関連した選択が可能になるらしい。
以上を踏まえた結果、以下のコードのようになりました。
Cursor c1 = managedQuery(uri, projection,Data.MIMETYPE + "=?",new String[] { StructuredName.CONTENT_ITEM_TYPE },StructuredName.PHONETIC_FAMILY_NAME + " ASC ,"+ StructuredName.PHONETIC_GIVEN_NAME + " ASC");while (c1.moveToNext()) {Cursor c2 = managedQuery(uri, projection,Data.CONTACT_ID + "=? AND " + Data.MIMETYPE + "=?",new String[] { c1.getString(0),Event.CONTENT_ITEM_TYPE},null);while (c2.moveToNext()) {//出力の記述}}
2010年11月14日日曜日
連絡先から誕生日をGoogleカレンダーに登録するアプリ「Birth2Cal」
あまりうまく探せていなかったせいかもしれませんが、ガラケーであった、
「連絡先に登録しているユーザの誕生日がカレンダーに表示」するアプリが
見当たらなかったので、自分で作ってみました。
欲しかった機能としては、
・連絡先のリストから、誕生日データが登録されているユーザの誕生日を拾って、
自分のGoogleカレンダーへ登録する
・Googleカレンダーは、自分が使っている他のアプリと連動したいので、
Googleカレンダーに登録できるようにしたいと考えていました。
・とりあえずは、自分が使用している環境(Nexus One)での動作が出来ればよい。
といった感じになっています。
実際に動かした画面が下のような感じです。
現在以下の不具合と要望が出ていますので対応予定です。
不具合
・登録していないカレンダーに対し、カレンダーに登録が可能。
ただし実際はカレンダーには出ていない。
・アイコンが微妙すぎるw
要望
・名前がソート順のほうが良い
・誕生日以外の記念日にも対応
「連絡先に登録しているユーザの誕生日がカレンダーに表示」するアプリが
見当たらなかったので、自分で作ってみました。
欲しかった機能としては、
・連絡先のリストから、誕生日データが登録されているユーザの誕生日を拾って、
自分のGoogleカレンダーへ登録する
・Googleカレンダーは、自分が使っている他のアプリと連動したいので、
Googleカレンダーに登録できるようにしたいと考えていました。
・とりあえずは、自分が使用している環境(Nexus One)での動作が出来ればよい。
といった感じになっています。
実際に動かした画面が下のような感じです。
現在以下の不具合と要望が出ていますので対応予定です。
不具合
・登録していないカレンダーに対し、カレンダーに登録が可能。
ただし実際はカレンダーには出ていない。
・アイコンが微妙すぎるw
要望
・名前がソート順のほうが良い
・誕生日以外の記念日にも対応
2010年11月13日土曜日
アプリデータ保存方法のプリファレンスについて
androidアプリにて、データを保存する方法がいくつかあり、
そのうちの1つが「プリファレンス」。
あまりデータサイズが大きくないものに関して使用するのがほとんだそうで、
今回は簡単な設定を残すのに使用しました。
保存するデータ型は、String/boolean/float/int/long型が使用可能で、
下はString型を使用して、プリファレンスの保存をした例です。
下はプリファレンスを取得した例です。
pref.getString("キー名1","")の第二引数は、
このキーが登録されていないときの初期値になります。
そのうちの1つが「プリファレンス」。
あまりデータサイズが大きくないものに関して使用するのがほとんだそうで、
今回は簡単な設定を残すのに使用しました。
保存するデータ型は、String/boolean/float/int/long型が使用可能で、
下はString型を使用して、プリファレンスの保存をした例です。
SharedPreferences pref = getSharedPreferences("プリファレンス名", MODE_PRIVATE);Editor e = pref.edit();e.putString("キー名1"," Test1 ");//e.putString("キー名2"," Test2 ");e.commit();
一つのプリファレンスに対し、キーは複数登録できるみたいなので、
上記の記載が可能です。
なお、MODE_PRIVATEは自分のアプリでのみ使用できることを指しています。
他に、MODE_WORLD_READABLEで、他アプリから読み取り可能、MODE_WORLD_WRITEABLEで、他アプリから書き込み可能 となっています。上記の記載が可能です。
なお、MODE_PRIVATEは自分のアプリでのみ使用できることを指しています。
下はプリファレンスを取得した例です。
SharedPreferences pref = getSharedPreferences("プリファレンス名", MODE_PRIVATE);String str1 = pref.getString("キー名1","");String str2 = pref.getString("キー名2","hogehoge");
このキーが登録されていないときの初期値になります。
登録:
投稿 (Atom)


