AndroidとJavaのメモ
2012年4月18日水曜日
githubにfreetypeその他のandroid.mkを公開して
から、sourceに入ってるのを気がついたが、今更消すのも寂しいし、まあいいや。
あ、freetypeしか使ってないので、他のは足りないかも。
一応文字は表示されたけど、他のを作ったら、ちゃんと動くサンプル書こう。
http://github.com/likedual
IntentでGalleryアプリから画像を受け取る
1. <intent-filter>内に受け取りたいintent.actionとdataタイプを追加
Galleryアプリからはaction.SENDで送られる。action.VIEWはファイラーアプリ等からの開く動作用
受け取り方
GalleryアプリからはACTION_SENDで送られる。
ずいぶん手間取ったけど、結局これで受け取れた。
強調している行はMedia.getBitmapと同じなので、そのまま置き換えられる。
疑問点
送られてくるIntentを、Logに投げると中身が表示されたが、
extras(Bundle)を一覧表示する方法は知らない。
Uriが返ってきそうな、getIntent().getData()は入ってない。
時間になってしまった。おかしいけど見てる人もいないし、取り敢えず公開しておこう。
ファイラーアプリからは別途受け取る必要があるが、次回の宿題になってしまった。
長期のブランクで、構造化プログラミング未満になってるし、前途多難だな。
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.SEND" /> <data android:mimeType="image/*" />
受け取り方
GalleryアプリからはACTION_SENDで送られる。
ずいぶん手間取ったけど、結局これで受け取れた。
Intent intnt = getIntent(); String intntAction = intnt.getAction(); Bundle intntExtras = intnt.getExtras(); if( Intent.ACTION_SEND.equals(intntAction) ) { Uri uri = (Uri)intntExtras.getParcelable( Intent.EXTRA_STREAM ); if( uri != null ) { InputStream input = getContentResolver().openInputStream(uri); Bitmap bmp = BitmapFactory.decodeStream(input); input.close(); } }
Bitmap bmp = Media.getBitmap( getContentResolver(), uri );
送られてくるIntentを、Logに投げると中身が表示されたが、
extras(Bundle)を一覧表示する方法は知らない。
Intent { act=android.intent.action.SEND typ=image/* cmp=com.likedual.Property/.PropertyActivity (has extras) }
時間になってしまった。おかしいけど見てる人もいないし、取り敢えず公開しておこう。
ファイラーアプリからは別途受け取る必要があるが、次回の宿題になってしまった。
長期のブランクで、構造化プログラミング未満になってるし、前途多難だな。
2012年3月27日火曜日
Android用にfreetype2をmakeしてみる(だけ)
Beuc's Blogさんの通りにやっただけ。
今日だけ環境がUbuntu64bit+SDK17+NDK7bmです。
c関係のライブラリは、linuxの方が弄りやすいですねえ。
NDK7bmを使ってますが、参考にした通りの手順なので、
作ったlibsはarmだけです。 あらかじめfreetypeは2.4.9を
workspaceに展開しておきました。 ディレクトリは適当に。
1.クロスコンパイラの準備をします。
~/android/android-ndk-r7bm/build/tools/make-standalone-toolchain.sh \
--platform=android-9 --install-dir=$ANDROID_NDK_ROOT/ndk-standalone-9
2.pathを追加
PATH=$ANDROID_NDK_ROOT/ndk-standalone-9/bin:$PATH
3.~/workspace/freetype-2.4.9内でconfigure
CFLAGS="-std=gnu99" ./configure --host=arm-linux-androideabi \
--prefix=/freetype --without-zlib
4.make
make clean
make
5.install
make install DESTDIR=$(pwd)
私の環境では~/workspace/freetype-2.4.9/freetype/libに
出来上がりましたが、まだ動かしていません。
今日だけ環境がUbuntu64bit+SDK17+NDK7bmです。
c関係のライブラリは、linuxの方が弄りやすいですねえ。
NDK7bmを使ってますが、参考にした通りの手順なので、
作ったlibsはarmだけです。 あらかじめfreetypeは2.4.9を
workspaceに展開しておきました。 ディレクトリは適当に。
1.クロスコンパイラの準備をします。
~/android/android-ndk-r7bm/build/tools/make-standalone-toolchain.sh \
--platform=android-9 --install-dir=$ANDROID_NDK_ROOT/ndk-standalone-9
2.pathを追加
PATH=$ANDROID_NDK_ROOT/ndk-standalone-9/bin:$PATH
3.~/workspace/freetype-2.4.9内でconfigure
CFLAGS="-std=gnu99" ./configure --host=arm-linux-androideabi \
--prefix=/freetype --without-zlib
4.make
make clean
make
5.install
make install DESTDIR=$(pwd)
私の環境では~/workspace/freetype-2.4.9/freetype/libに
出来上がりましたが、まだ動かしていません。
2012年3月5日月曜日
Cygwinのrepoとかでcan not fork()とか出た時に
アドレスがダメだみたいなエラーが出たら、rebaseallしよう。
ネタ元はこちら「Cygwinで "unable to remap *.dll" が出るときは rebaseall らしい」
ホント助かりました。
ちなみにandroid.jarのソースを取得してた時の話です。
これAndroidアプリ作ってる人は全員やってるんだろうな。
Googleは速やかに、各バージョン毎のsource.jarをミラーサーバで配布すべきでしょ。
あまりにも開発資源のムダすぎる。それともみんなlinuxなのかなあ。
/frameworks/base/core/java/android
/frameworks/base/core/java/com
の2つのディレクトリを
C:\android-sdk\platforms\[androidのversion]
以下にコピーして、無事ソースが表示されるようになりました。
ネタ元はこちら「Cygwinで "unable to remap *.dll" が出るときは rebaseall らしい」
ホント助かりました。
ちなみにandroid.jarのソースを取得してた時の話です。
これAndroidアプリ作ってる人は全員やってるんだろうな。
Googleは速やかに、各バージョン毎のsource.jarをミラーサーバで配布すべきでしょ。
あまりにも開発資源のムダすぎる。それともみんなlinuxなのかなあ。
c:\cygwin\usr\bin>ash rebaseall -v
/frameworks/base/core/java/com
の2つのディレクトリを
C:\android-sdk\platforms\[androidのversion]
以下にコピーして、無事ソースが表示されるようになりました。
2012年2月10日金曜日
Activityがスクリーンサイズより小さく表示される
ちょっとわかりづらい?。こんな感じに表示された。アプリの表示が画面サイズと合わない。それっぽい設定って無いんだよね。そういうアプリも見たことなかったし。
しばらくググっても分からなかったけど、早起きしてゴミ捨てしたおかげで、みつかった。
Galaxyシリーズは持ってないけど、エミュレータでもHTCの実機でも、同様の表示になる。ネットが無いころだったら、わからなくて諦めたなこれは。
AndroidManifest.xmlの<manifest>内に、以下のSdkVersionを追加したら、正しく表示された。
カッコワルイ |
Galaxyシリーズは持ってないけど、エミュレータでもHTCの実機でも、同様の表示になる。ネットが無いころだったら、わからなくて諦めたなこれは。
AndroidManifest.xmlの<manifest>内に、以下のSdkVersionを追加したら、正しく表示された。
<uses-sdk android:minSdkVersion="4" />
カッコイイ |
余談だけど、先人の作ったコードを参考にしてたら再現してしまい、SdkVersionは関係ないのかと再び悩んだら、微妙にタグが違ったりして力が抜けた。みんな苦労してるんだなあ。
2012年2月4日土曜日
findViewByIdはsetContentViewの後で
前回のHelloActivityのソースに、テキストを表示したくて追加したら、実行時エラーが出た。
LogCatにエラーはぬるぽしか理解できない。
DDMSの使い方も勉強しなければ。
"import android.widget.TextView;"も追加してある。
setContentView実行後でないと、Activityが実体化されずnullが返る。
Activityの仕様みたいでDialog等でも起きる。
参考資料(Kazzzの日記さん:AlertDialog#findViewByIdはshow以降じゃないと使えない)
今回判ったこと。
このエントリーはもちろんSyntaxHighlighterを試したくて書いた。
参考
ななし's Programming: SyntaxHighlighterのグーグルBloggerでの使い方
次回以降の宿題
よしけんActivity: Syntax Highlighter 3.0でLogcatのハイライト表示を自作する手順
02-04 01:03:38.007: E/AndroidRuntime(4179): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.helloactivity/com.example.android.helloactivity.HelloActivity}: java.lang.NullPointerException
DDMSの使い方も勉強しなければ。
public class HelloActivity extends Activity { public HelloActivity() { } /** * Called with the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tview = (TextView)this.findViewById(R.id.text); tview.setText( System.getProperty("file.encoding") ); // Set the layout for this activity. You can find it // in res/layout/hello_activity.xml setContentView(R.layout.hello_activity); } }
setContentView実行後でないと、Activityが実体化されずnullが返る。
Activityの仕様みたいでDialog等でも起きる。
参考資料(Kazzzの日記さん:AlertDialog#findViewByIdはshow以降じゃないと使えない)
今回判ったこと。
- 何をするにも先にsetContentViewする。
- findViewByIdでViewを取得できる。
- Viewは代入時にキャストする。
このエントリーはもちろんSyntaxHighlighterを試したくて書いた。
参考
ななし's Programming: SyntaxHighlighterのグーグルBloggerでの使い方
次回以降の宿題
よしけんActivity: Syntax Highlighter 3.0でLogcatのハイライト表示を自作する手順
2012年2月3日金曜日
HelloActivity
登録:
投稿 (Atom)