タグ

ブックマーク / kazzz.hatenablog.com (64)

  • XmlPullSubtreeParser - Kazzz's diary

    XMLの特定の要素だけをパースしたい場合がある。他のメソッドやクラスにパース処理を委譲してしまいたいのが主な理由だ。 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <array name="preloaded_drawables"> <item>@drawable/indicator_code_lock_drag_direction_green_up</item> <item>@drawable/indicator_code_lock_drag_direction_red_up</item> </array> <array name="preloaded_color_state_lists"> <item>@color/hint_foreground_dark</item> <item>@color/hint

    XmlPullSubtreeParser - Kazzz's diary
  • NsdServiceは時期尚早? - Kazzz's diary

    androidからのBonjourをテストするのに最初JmDNSの実装を使う予定だったのだが、android 4.1以降サポートされたandroid.net.nsdバッケージがmDNS(Multicast DNS)とDNS-SD(DNS based Service Discovery)をサポートしたとのことなので、まずはそちらから試してみることにした。 NsdManagerによりサービスを探索する疑似コード NsdManager nsdManager = (NsdManager) getSystemService(NSD_SERVICE); nsdManager.discoverServices("_ipp._tcp.local.", NsdManager.PROTOCOL_DNS_SD, new NsdManager.DiscoveryListener() { @Override pub

    NsdServiceは時期尚早? - Kazzz's diary
    craf
    craf 2013/03/13
  • androidプロジェクトでjavadocを生成する - Kazzz's diary

    Eclipseを使えば簡単だと思っていたんだが、そうでも無かった。 ビルドツールもコマンドも使わず、EclipseのExportメニューでプロジェクトソースのjavadocを生成しようとすると、以下のエラーが出て途中で止まってしまう。 java.lang.ClassCastException: com.sun.tools.javadoc.ClassDocImpl cannot be cast to com.sun.javadoc.AnnotationTypeDoc at com.sun.tools.javadoc.AnnotationDescImpl.annotationType(AnnotationDescImpl.java:46) at com.sun.tools.doclets.internal.toolkit.util.ClassUseMapper.mapAnnotations(C

    androidプロジェクトでjavadocを生成する - Kazzz's diary
  • OpenCV for Android 2.4.3 (その2) - Kazzz's diary

    OpenCV for androidのインストールが終わったので、実際にアプリケーションを書いてみよう。 OpenCVといえば、まずすることは2値化ということでImageViewに表示する前に画像をOpenCVで2値化するコードを書いてみた。 MainActivity.java private void doBinarize() { Bitmap bm = ((BitmapDrawable)this.cropCanvas.getDrawable()).getBitmap(); Mat src = new Mat(); Utils.bitmapToMat(bm, src); Mat bined = OpenCVUtil.binarize(src, 0); Imgproc.cvtColor(bined, bined, Imgproc.COLOR_GRAY2RGBA, 4); Bitmap ds

    OpenCV for Android 2.4.3 (その2) - Kazzz's diary
  • deallocを明示的に書くこと - Kazzz's diary

    ARCの素晴らしい所はretain/releaseをコンパイラとランタイムが面倒を見てくれるお陰で、プログラマの負担が大幅に減ることだが、だからといってオブジェクトの参照と解放に対して無神経になって良い訳ではない。 以前にも書いたがARCは自らretain/releaseを書くことが許されていないので、思わぬ所で意図せずオブジェクトが確保/解放されている場合がありこれがバグを非常に解り難くしている。※ いつオブジェクトが解放されているかを知るためにはdeallocが動作していることを確認すれば良いわけで、ここから、まだ半年にも満たないObjective-Cプログラマ経験から 「デバッグで困ったらdeallocを明示的に書くべし」 という経験則が適用できる。 deallocを書くのは簡単だ。全てのクラスでdeallocメソッドをオーバライドできる。 - (void)dealloc { //後

    deallocを明示的に書くこと - Kazzz's diary
    craf
    craf 2012/06/14
  • 得体の知れない不快感 - Kazzz's diary

    先日、MacBookAirにマウスを接続して使った所、ホイールによるスクロールの向きが逆なので環境設定を見てみるとスクロールの設定で「スクロール又は移動するときに、コンテンツを指を動かした方向に移動させる」がチェックされており、これが原因だと判ったので外した。 その後トラックパッドを使ってWebブラウザを使うとスクロールが不自然というか何かしっくりこないので、環境設定を見てみると「スクロールの方向:ナチュラル」のチェックが外れており、これが原因だと判ったのでチェックした。 これを何度か繰り返してやっと気がついたのだが、この二つの設定は同期しており互いに排他的に設定することができないのである。 私が心地よいのは マウス設定 □「スクロール又は移動するときに、コンテンツを指を動かした方向に移動させる」 こちらはOffにして トラックパッド設定 ■「スクロールの方向:ナチュラル」 こちらはOnに

    得体の知れない不快感 - Kazzz's diary
    craf
    craf 2012/02/06
    これはつらい
  • GALAXY Nexus (docomo SC-04D) oem unlock〜clockworkMod recoveryによるバックアップ - Kazzz's diary

    GALAXY Nexusはdocomoから発売された為、ロケールもきちんと日に対応しており日フォントもCJKタイプではなく、綺麗な日フォントがインストールされている。従って以前のNexusシリーズのようにフォントに不満はなく、rootを取る必要も無い。 とはいうもののNANDイメージ、特にdocomo版のROMは一度はバックアップをとって置きたいので、ClockworkModは一時的にでも導入したい。 では作業開始。行うことは 1. ブートローダーから起動 2. ブートローダーのアンロック 3. ClockworkMod Recoveryからブート 4. バックアップ作成 Nexus SでそうだったようにGALAXY NexusもWindows環境ではデバイスドライバが正しく認識しなかった。 なので、以前に書いたエントリで行った手順でドライバをインストールすることにした。 [An

    GALAXY Nexus (docomo SC-04D) oem unlock〜clockworkMod recoveryによるバックアップ - Kazzz's diary
    craf
    craf 2011/12/05
  • ファイルにエンコーディングを付けて保存する方法 - Kazzz's diary

    Androidの開発を初めてからはどんなファイルでもUTF-8で保存することを習慣にしていたつもりだが、先日何故かShift_JIS(MS932)で保存されてしまったC#コード※があったので、エンコーディングを変えて保存しようと思ったのだが、Visual Studio 2010にそのような機能が見つからない。 昔のバージョンは「ファイル」メニューの何処かにあった気がしたのだが。 方法: エンコーディングを使用してファイルを管理する - MSDNライブラリィ 手順 メニュー「ファイル」→「名前を付けてxxxxを保存」で保存ダイアログを表示し、「上書き保存」ボタンのドロップダウンを開いて「エンコード付きで保存」を選択する。 エンコーディングと改行コードを明示的に選択してファイルを保存する 以上だ。 今ひとつ判らないメニュー階層にあるのと、ボタンがドロップダウンになっていることの二重苦により、こ

    ファイルにエンコーディングを付けて保存する方法 - Kazzz's diary
  • 他パッケージ(他のapk)のリソースを読む part2 - Kazzz's diary

    ならば読み出すことは不可能なのだろうか? 否。 答えはAndroidのマニフェストにある。 Androidにアプリケーションをインストールするには、インストールするアプリケーションを説明する、AndroidManifest.xmlという名前のマニフェスト(嫌な名前だ)ファイルを必ず作る必要がある。 Eclipse ADTがデフォルトで作成するAndroidManifest.xml ?xml version="1.0" encoding="utf-8"?> 肝はこの中の要素のsharedUserId属性だ。 android:sharedUserId - manifest Android Developers android:sharedUserId 他のアプリケーションと共有するLinuxユーザIDを指定する。デフォルトではAndroidがアプリケーション独自のユニークなユーザID を割り当

    他パッケージ(他のapk)のリソースを読む part2 - Kazzz's diary
    craf
    craf 2011/10/03
  • android sdk 2.3.4の正体 - Kazzz's diary

    かなり前のOTAで更新した記憶があるが、現在のNexus Sのandroidバージョンは2.3.4になっている。 ■[android][Nexus s]Android 2.3.4(GRJ22) OTA しかしこの2.3.4というバージョン、SDKドキュメントに記載があるもののダウンロード可能なSDKでは同バージョンは存在していない。2.x系最新のSDKをインストールした状態でAVDを作成したエミュレータを起動してみたが、やはり2.3.3だ。 ではやはり2.3.4はないのだろうか? Android SDK and AVD Managerで現時点の最新のバージョンを取得してみると、同じ 2.3.3でも"revision 2"というのが見える。これが2.3.4相当なのかなと思って、わざわざ2.3.3(revision 1)を一旦削除してインストールし直してみるこにした。 そしてエミュレータを起動

    android sdk 2.3.4の正体 - Kazzz's diary
    craf
    craf 2011/08/08
  • HoneycombにTabActivityは無い - Kazzz's diary

    今更だがHoneycombでandroid 2.xのTabActivityに相当するクラスを探していたが、どうやら無いようだ。 そればかりかActivityGroupはHoneycomb以降、Deprecatedらしい。 ActivityGroup | Android Developers This class is deprecated. Use the new Fragment and FragmentManager APIs instead; these are also available on older platforms through the Android compatibility package. A screen that contains and runs multiple embedded activities. どうしよう、複数のActivityの一元に管理す

    HoneycombにTabActivityは無い - Kazzz's diary
    craf
    craf 2011/07/25
  • FragmentはActivityを置き換えない - Kazzz's diary

    Android 3.0(Honeycomb)以降に追加されたandroidのコンポーネント化技術である"Fragment(フラグメント)"だが、GUIの有無に関わらず今後のandroidプログラミングにおいて非常に重要な位置を占めるだろう。 Fragments | Android Developers Fragmentを使うことでActivityクラスのかなりの機能を置き換えることができるせいか、ネットでも冗談めかして「Activityはオワコン」とか「Activity終了のお知らせ」等の極論を見かけるが、Activityにはコードをできるだけ書かないのはいいとしても、それ自体が不要なものになるのだろうか? まさかそんなことはない。 ActivityはJFC/SwingでいえばJFrameクラス、.NET WindowsFormsでいえばFormクラスであり、GUIアプリケーションを構成す

    FragmentはActivityを置き換えない - Kazzz's diary
    craf
    craf 2011/07/22
  • ForegroundDispatchとonPauseに注意 - Kazzz's diary

    Android 2.3.3(4)、NFCのForegroundDispatchを制御するにはActivityのonResume/onPauseを基準にする必要があるということで、以下のようなスニペットがよく紹介されている。 private NfcAdapter mAdapter; private PendingIntent mPendingIntent; private IntentFilter mFilters; private String mTechLists; private TextView mText; private int mCount = 0; @Override public void onCreate(Bundle savedState) { super.onCreate(savedState); mAdapter = NfcAdapter.getDefaultAda

    ForegroundDispatchとonPauseに注意 - Kazzz's diary
    craf
    craf 2011/07/06
  • https://kazzz.hatenablog.com/entry/20110704/p1

    craf
    craf 2011/07/04
  • Eclipse 3.7への移行(新機能) - Kazzz's diary

    Eclipse 3.7(INDIGO)が正式にリリースされたので、早速移行してみた。 今までなら、新しいEclipseに移行するには 1. 旧Eclipseをインストールしたディレクトリ名を適当に変更(例: e:\eclipse3.5) 2. 新Eclipseをzipファイルから展開(例: e:\eclipse) 3. 旧Eclipseのfeatureディレクトリから"org.eclipse."以外のパッケージを新Eclipseにコピー 4. 旧Eclipseのpluginディレクトリから"org.eclipse."以外のパッケージを新Eclipseにコピー 5. 上記までで上手く移行できなかったプラグインを再構成 という手順を踏んでいたが、Eclipse 3.7(INDIGO)ではimportに新たな機能が追加されたらしい。 Eclipse 3.7を使い始める前に知っておくといいこと -

    Eclipse 3.7への移行(新機能) - Kazzz's diary
    craf
    craf 2011/06/28
  • FragmentをAndroid2.3.4で使用する - Kazzz's diary

    FragmentはAndroid SDK 3.0からサポートされた機能だが、パックポートとしてAndroid1.6以降のSDK(1.6〜2.3.4)で使用することができる。 以下、Android 2.3.4でFragmentを使う場合の手順メモ Android互換性パッケージをインストールする 既存のAndroid 2.3.4用のandroid.jarにFragmentのサポートは含まれていないため、使用するためには「互換性パッケージ」と呼ばれるサポートライブラリィが必要になる。 このパッケージの導入はAndroid SDK and AVD Managerから簡単に行える。 プロジェクトに互換性パッケージのjarファイルを組み込む ダウンロードした互換性パッケージは%android_sdk%/extras/android/compatibilityに保存される ので、その配下にある and

    FragmentをAndroid2.3.4で使用する - Kazzz's diary
  • Receiver not registered - Kazzz's diary

    拙作のカレンダビュー(CalendarView)では、ViewFlipperにより月の前後の変化をアフォードするアニメーションを実装しているが、レイアウトを縦|横と変えていると以下の例外が発生することに気がついた。(Android 2.1) : Uncaught handler: thread main exiting due to uncaught exception : java.lang.IllegalArgumentException: Receiver not registered: android.widget.ViewFlipper$1@43c1cbd0 : at android.app.ActivityThread$PackageInfo.forgetReceiverDispatcher(ActivityThread.java:667) : at android.app.A

    Receiver not registered - Kazzz's diary
    craf
    craf 2011/05/09
    ViewFlipperのバグについて
  • プロパティエディタプラグイン - Kazzz's diary

    プロパティエディタ開発プロジェクト プロジェクト語トップページ - SourceForge.JP Javaのプロパティファイル(.properties)は文字セットISO-8859-1又は\udddd表記(ASCII表記)されたUnicodeしか扱えないため、日語を入力する場合はnative2ascii等のツールで文字を変換しなくてはならなかったのだが、このプラグイン=エディタを使用することでそれを意識せず、具体的にはEclipseの中ではUTF-8のまま文字列を扱うことができる。 通常のエディタで開いたプロパティファイル(IAddressBook.properties) 化けてしまっている。 当プロパティエディタで開いたプロパティファイル(IAddressBook.properties) 正しく表示される。 実際にコンパイルする場合はUnicode文字は\udddd表記に変換された

    プロパティエディタプラグイン - Kazzz's diary
    craf
    craf 2011/04/22
  • 悩めるテスト - Kazzz's diary

    たくさんあるAndroid SDKの素晴らしい点の一つは、機器側で動作させることが出来るテストの仕組みが最初から用意されている所だ。 ADTを使うとAndroidアプリケーションに対してのユニットテスト-プロジェクトを簡単に作成できるが、ウィザードの言うとおりにすると以下のように被テストプロジェクトに対して並行になる形でテストプロジェクトが作成される。 -+- org.kazz (被テスト側) | +-- src | +-- org | +-- kazz -+- org.kazz.test (テスト側) | +-- src | +-- org | +-- kazz | +-- testアプリケーションとテストのコードは普通は分離したいものなので、これで良い。 Androidの場合は被テストコードとテストコードは互いに機器側にデプロイした状態でテストを実行する必要があるため、Instrume

    悩めるテスト - Kazzz's diary
  • ADTによるLibrary Projects - Kazzz's diary

    さて、Android Development Tools (ADT) 0.9.7で有効となった "Library Projects"だが、早速使ってみた。 結論としては、今まで苦労して複数のプロジェクトを関連づけしていたのが嘘のように設定が簡単で尚かつ快適だ。 設定は最新のADTドキュメント > Working with Library Projects※に書いてあるが、以下の手順で実施する。 ライブラリィプロジェクトの設定 複数のプロジェクトで共有したいリソースを集約したAndroidプロジェクトを作成する(私のように既にあればそれを使う) プロジェクトは通常のAndroidプロジェクトとして作成するが今までに無い操作を一つだけ行う。 1.プロジェクトプロパティウインドウを開ける適当なビュー(パッケージエクスプローラ等。私はナビゲータ派だが)のコンテキストメニューから"プロパティ(pro

    ADTによるLibrary Projects - Kazzz's diary