A Day In The Life

とあるプログラマの備忘録

java

Cocos2d-x でネイティブ連携する方法

Cocos2d-x でゲームを開発していると広告を表示させたり、ランキングを追加したり、課金を入れたり、SNS や Twitter と連携したり、アクセス解析をしたり、など iOS や Android の機能を使わないと実現できない機能があります(このようにプラットフォームと …

Androidでui::ScrollViewの背景が緑色になる時の対処方法

Cocos2d-x(3.4 Final) の ui::ScrollView クラスを使うとAndroidで背景色が緑色になる現象が発生しました(iOS ではこの現象は発生しません)。 こちらのページに載っている方法で解決することができました。 Problems with UIScrollView: Green Background an…

Android のソフトウェアキーボード表示・非表示を検出する

Android でソフトウェアキーボードの表示・非表示を検出する方法です。 LinearLayout クラスの onMeasure メソッド内でビューの高さを測ることでキーボードが表示されているかどうか検出できます。 import android.content.Context; import android.util.Att…

Android でライブラリの追加無しでマルチパート POST する方法

Android SDK には Apache Commons の HttpClient など HTTP 通信するためのライブラリがあらかじめ搭載されているのですがマルチパート POST するためのライブラリがありません。Apache のライブラリをプロジェクトに自前で追加してもいいのですが必要のない…

Android で LocationManager と MapView を連携させる

Android で Google Map を使ったアプリを作成しようとしたのですが、ライブラリに癖があって結構苦労しました。そこで LocationManager を使って MapView(Google Map) 上に位置情報を表示させる簡単なサンプルプログラムを作成してみました。 サンプルプログ…

Javascript 関数の戻り値を Android から取得する方法

Android の WebView を使って Javascript 関数を呼び出すには WebView#loadUrl メソッドを使います。ただしこの方法だと関数の戻り値を取得することができません。 一番簡単で手軽な方法として Javascript の alert 関数を使って WebChromeClient クラスの o…

Android で GPS 衛星からの情報を NMEA 形式で取得する方法

Android 2.0 から GpsStatus.NmeaListener というリスナが追加されました。このリスナは NMEA-0183という形式で GPS 衛星の情報を取得できます。このリスナかなり細かい情報がとれて面白いのでデータを取得するプログラムを作成してみました。 なお NMEA の…

Android の位置情報を確実に取る方法

Android の位置情報は端末や OS のバージョンによって微妙にとれるタイミングやプロバイダがちがうので iPhone にくらべかなり癖があります。中には LocationManager#requestLocationUpdates メソッドを呼んでも30分以上メソッドが呼び出されないなんて事も…

iPhoneとAndroidでちょっとしたデータの保存方法を比較してみる

データベースを使うほど大げさなものじゃなくて、ちょっとしたデータを保存したいときって結構あると思います。 そんな時iPhoneはNSUserDefaultsクラス、AndroidはSharedPreferencesクラスを使います。両者ともにKey-Value形式でデータを保存できます。ただ…

歩行ロボットの実験を通して周期関数としての三角関数の使い方を学ぶ

最近、GLUTによる「手抜き」OpenGL入門やOpenGLを使ってJavaでも3Dを楽しもうを参考にOpenGLの勉強をしています。 その中で歩行ロボットの実験という面白い演習問題を見つけたので腕試しにJOGLで実装してみることにしました。 問題のヒントとして腕や足の振…

メソッドの引数はオペランドのみにする原則(メソッドの引数がクラス設計に影響する)

前回に続きメイヤー著「オブジェクト指向入門 第2版 方法論・実践」で面白い原則があったのでまとめてみました(コード例はJavaで書きました)。 前提 メソッドの引数は2種類ある オペランドメソッドの操作対象であるオブジェクト オプション操作のモード オ…

iPhoneとAndroidのアプリケーション間連携方法を比較してみる

アプリAとアプリBがあり、アプリAでテキストボックスに文字を入力しボタンを押すとテキストボックスの内容をアプリBの画面に表示するサンプルを使って説明します。 iPhoneの場合 iPhone では UIApplication クラスの openURL メソッドを使うと他のアプリを起…

iPhoneとAndroidで真北の取得方法を比較する

この前書いた日経ソフトウエア2010年1月の記事の中でiPhoneとAndroidの電子コンパスについて書いたのですが、紙面の都合上Androidで真北をとる方法を載せることができませんでした。せっかくなので補足の意味も込めてAndroidで真北をとる方法を紹介しiPhone…

Processingでお絵描きをしてみる

最近Processingというお絵描き用プログラミング言語で遊んでいます。 手軽にいろいろできて面白いです。構文はJavaの簡易版といった感じなので、Javaがわかる人だとすぐにプログラムできるようになると思います。 サンプル static final int LENGTH = 400; v…

Google Androidプログラミング入門

Google Androidプログラミング入門江川 崇, 竹端 進, 山田 暁通, 麻野 耕一, 山岡 敏夫, 藤井 大助, 藤田 泰介, 佐野 徹郎アスキー・メディアワークスこのアイテムの詳細を見る 執筆に参加した「Androidプログラミング入門」が今日発売になります。前著「Goo…

Dev Phoneの温度センサはバッテリーの温度を測っているらしい。

Android(HTC Dev Phoneで検証、G1では未検証)の温度センサを試してみました。 気温20℃で33と表示されるのでなんかおかしいと思い、いろいろ調べてみるとインテントレシーバでバッテリーの温度が取れるらしいこと発見しました。もしやこれはセンサーの温度計…

AndroidとiPhoneのUIの実装方法を比較する

使えるUI部品の種類は似たり寄ったりですね。iPhoneはガベージコレクションが使えないのでオブジェクトの開放をしてやる必要があってめんどくさいです。 Viewの種類 iPhoneにはチェックボックスがなく代わりにUISwitchがあるのが面白いです。両者の違いはな…

AndroidとiPhoneのイベントハンドラの実装方法を比較する

両者の大きな違いはiPhoneはInterface Builderでイベントの定義ができるのに対しAndroidはレイアウトXMLでイベントの定義ができないところです。 またiPhoneはselectorという関数ポインタに似た仕組みがあるのでコード上でも割と簡単にイベントの定義ができ…

開発者目線でAndroidとiPhoneを比較してみる

iPhone と Android 両方のアプリ開発を経験したので両者を比較してみます。 技術情報 iPhone iPhone Dev Center iPhone Dev Center(日本語) Android Android Developers Android Developers(日本語) OS iPhone Mac OS Xベース Android Linuxベース 開発言語/…

AndroidとiPhoneの加速度計アプリの実装方法を比較してみる

大きな違いとしてはiPhoneの場合加速度計のみ管理しているのに対してAndroidは他のセンサー(温度計や磁気センサーなど)と一括りにして管理しています。またiPhoneでは加速度計オブジェクトを直接取得できるのに対しAndroidでは加速度計オブジェクトを取得す…

アジャイルソフトウェア開発の奥義 第2版

本屋で奥義本の第2版が出てるのを発見しました。 興奮して中身みたらC++のコードがJavaにかわってただけでした。 もともとコードの7割ぐらいがJavaやったしなんとも微妙...。 アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技ロ…

仕事を通して遅延学習の穴を埋めてきた。

5月の連休明けから先週までとあるSIer様の新人研修(Java・UML・オブジェクト指向)のサブ講師をしていました。 そもそも文系学部→システム営業出身でプログラミングの新人研修というものを受けたことがない私のような人間にはすべてが新鮮でした。 クラスパス…

Androidアプリ開発標準を作成してみました。

本格的にAndroidアプリの開発をするとなるとやはり開発標準が必要になると思います。 ガチガチに決める必要はありませんが、開発標準があれば複数人開発にも一定の秩序ができてやりやすくなるかと思います。UI標準D_PAD_CENTERまたはバックボタンで代用でき…

Spring + Hibernate連携メモ

SpringのHibernateDaoSupportクラスのgetHibernateTemplate経由のメソッドはSessionのcloseとflushを自動でやってくれるんですね。 ということは、getHibernateTemplate経由で取得したオブジェクトは分離オブジェクトになりますね。 Spring+Hibernateのセッ…

アノテーション汚染

ここ何日かHibernateAnnotationsを使ってみて気づいたことなんですが、ビジネス層がアノテーションで汚染されてるような気が...。 現在作成中のアプリケーションのレイヤ構成とパッケージ構成はこんな↓感じです。プレゼンテーション |-action ?form ビジネス…

HibernateAnnotationsでフィールドアクセス

Hibernateアノテーションでまたもやハマってしまいました...orz Immutableなクラスを作りたくてフィールドアクセスに変えようとしただけなのになぁ。 Hibernateでgetter/setterアクセスからフィールドアクセスに変更するには通常hbmファイルだと↓のようにacc…

all-delete-orphanがない!

昨日に引き続きHibernateアノテーションの話題です。 EJB3アノテーションのcascadeにはall-delete-orphanがありません。 これがないと1対多の関係で多のオブジェクトを削除してもDelete文を発行してくれません(それどころかupdateメソッドで落ちます)。 この…

相変わらず受身なフレームワークに踊らされてます

Hibernateでイーガフェッチを使うと重複行までとってきてしまいます。 普通、重複行は持ってこないだろと思うのですがそんなに親切ではありませんでした。通常eagerなコレクションフェッチをすると重複が出てしまうため、あなたが期待するような行数にはなら…

EJB3の勉強にもなるHibernateアノテーション

今日は一日中、Hibernateアノテーションと格闘してました。 Hibernateアノテーションに移行してしまえばhbmファイルが必要なくなるので導入するメリットはでかいです。 まずはこちらのページで基礎を勉強してしてます。 HibernateAnnotations::きしだ なおき…

Struts1.3x + Springの連携

ActionにサービスをAutowiringでDIしたいときは通常AutowiringRequestProcessorを使うのですがそうするとStrutsのChainが使えなくなってしまいます。 両方使いたいってときは↓のサイトが参考になります。 Struts(1.2.x)+Spring連携 Struts 1.3.x + Spring 2.…