投稿

11月, 2011の投稿を表示しています

ツンデレの元祖

ふと思った。 「ツンデレ」という概念が、 世の中に定着しつつある、 ・・・のかどうなのかは知らないが、 その元祖は「きまぐれオレンジ☆ロード」の 鮎川まどかではないだろうか。 道理で興味深いわけだ(爆)

Android:画像を保存してみる

MediaStore.Images.Media.insertImageを使ってみる カメラの写真のフォルダに画質の低いjpegで保存してしまう使い所のよくわからないメソッド。 ダメメソッド? マジメにファイル書き込み処理をする というわけで、マジメなファイル書き込み処理にてSDカードのPictureフォルダに書きこむ String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath(); File file = new File(sdPath,"/Pictures/hoge.png"); FileOutputStream out = null; try { out = new FileOutputStream( file ); b.compress( CompressFormat.PNG, 100, out ); out.flush(); } catch (FileNotFoundException e ) { } catch (IOException e ) { } finally { try { if (out != null) out.close(); } catch (IOException ex) {} } } ところで、Pictures直下に画像を保存した場合はGalleryに表示されるが、新しいフォルダを切った場合、表示されない。 どうやらContentResolver.insertで解決できるらしいが、まだ試していない。 さらにところで、SDカードにファイルを書き込むためにはAndroidManifest.xmlに権限の追加が必要。 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

Android:画像を読み込んでみる

Androidで画像を読み込む方法はいくつかある ファイルパスを指定:BitmapFactoryを使用 SDカードから画像を読み込んでみる。 String  sdPath = Environment.getExternalStorageDirectory().getAbsolutePath(); Bitmap image = BitmapFactory.decodeFile(sdPath+"/Pictures/hoge.png"); Uri指定:MediaStoreを使用 ContentPrividerを通した時にUri指定となり、ファイルパスと少々違ったやり方が必要になる。 ContentResolver cr = getContentResolver(); Bitmap image = MediaStore.Images.Media.getBitmap( cr, uri ); 超簡単でお手軽。 ContentResolverが必要なので場合によっては面倒かもね。 Uri指定:BitmapFactoryを使用 InputStream in = cr.openInputStream(uri); Bitmap image = BitmapFactory.decodeStream(in); in.close(); decodeStreamにBitmap.Optionsを付けられるメソッドもあるので、細かい指定が可能そうだ。

PythonでWindowsのexeファイルを作成

Windowsのexeファイルを作成するのって、真っ当な選択肢が無い。 (.Netをやりたくないだけだが・・・) というわけで、PythonでWindowsのexeファイルを作る方法を調べてみた ツール PyInstaller( Download ) インストール方法 zipをダウンロードして、展開して、好きなフォルダに置く コマンドラインからそのフォルダにて以下のコマンドを実行 > python Configure.py 使い方 コマンドラインから以下のコマンドを順番に実行 ※適当なパスを通す必要があります > python Makespec.py 俺プログラム.py > python Build.py -F 俺プログラム.spec Makespec.py及びBuild.pyはPyInstallerのプログラム。 .specファイルは、Makespec.pyが作り出す中間ファイル ※本当は設定ファイル。ツールである程度作ってくれるというイメージらしい。 成果物 ツールが作成するdistディレクトリに、俺プログラム.exeが出力されます。 それ単体で動きます。 ファイルサイズは「print "helloworld"」で1.8MByte程度。 ※ちなみにBuild.pyの時の-Fオプションを外すと、VisualCやpython本体のdllを別構成にすることができる。 Makespec.pyのオプション -F または --onefile → exeファイルをひとつに収める --windowed → Windowsアプリとする。コマンドラインが出ない。 --icon → アイコン画像(.ico)を設定する ライセンス エキサイト翻訳によると、商用であってもこれを使ったものを配布するのに制限はない、らしいが真偽のほどについてはご自分でご確認ください。

Flashでスマフォのネイティブアプリ?

Flash Builderでは、ひとつのソースから iPhoneとAndroidのネイティブアプリが作れるらしい。 Flash Builder以外にもこういったものはあって、 これってすごく魅力的なのだが、諸々な事が そのツールに依存することになることを考えると なかなか導入に踏み切れない。 例えば、そのツールがOSの新Ver対応に遅れた場合、 こちらとしてはそれを待つしか無いわけですよ。 それってほとんど無いものの、万が一あった時に 「そのツールのせいだから仕方ないです。お待ちください」 って言うことを考えると…言えないよね。。 特にiOS5とか見てると、スマフォって ドラスティックな変化があることが前提な気もしてくるので。

Android: Touch Eventを簡単に処理する

AndroidのTouch Eventを真面目にやるのはシンドイ。 と思っていたら便利クラスを発見 GestureDetector LongTapやFlicなどを簡単に検出できる ScaleGestureDetector(API Level:8) ピンチイン、ピンチアウトを簡単に検出できる GestureDetectorのイベントを調べてみた public boolean onDown(MotionEvent e) 触れた瞬間発動 しかし、SingleTapなのかMultiTapなのか、動くのか動かないのか、すぐ離すのか長く押されるのか、この時点では確定しない public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) フリック動作をしたときのイベント public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) スクロール動作 どうやったら発動するのか不明。マウスのホイールか? public void onShowPress(MotionEvent e) Single TapのままDownが少し継続すると発動。 public boolean onSingleTapConfirmed(MotionEvent e) Down後、最後までSingleTapかつ移動しなかった場合発動。 public boolean onSingleTapUp(MotionEvent e) Down後、途中、MultiTapになっても移動しなかった場合発動。 ScaleGestureDetectorのイベントを調べてみた public boolean onScale(ScaleGestureDetector detector) スケールが変わっても変わってなくても呼ばれるっぽい スケール自体は、detector.getScaleFactor()で取得できるが、この値は、前回のイベントからの相対値であることに注意。 ピンチインを開始してからの倍率ではない。つまり、指

Flashの終焉?

ついにキタ。 Flashモバイル対応から撤退。 http://japan.cnet.com/news/service/35010339/ とうとうFlashの終焉が始まった。 PCだけで生き残れるかね。HTML5はPCでも動くぞ。 と思ったら、ネイティブアプリケーションを作る クロスプラットフォームとして生き残るらしい。 確かにそれぞれのOS向けにネイティブアプリを 作るのは大変だからね。。