スポンサーサイト
--/--/-- (--) --:--:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | page top↑
Android Google APIインストール覚書
2011/12/06 (Tue) 23:03:20
Google mapsを利用するアプリを作ろうと思ってGoogleAPIをインストールするのに少し苦労した。

まず、eclipseのAndroid SDK Managerからインストールしようとしたら、

Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list.xml, reason: File not found

と言われてダウンロードできない。

このManagerというのが古いんじゃないかと思ってUpdateしようとすると、
フォルダが開けません系のエラーが出てアップデートできない。

http://ichitcltk.hustle.ne.jp/gudon/modules/pico_rd/index.php?content_id=60

こちらのページを参考に、eclipseを閉じてからコマンドプロンプトを管理者権限で実行してandroid.bat実行後、再挑戦したらアップデートできた。何なのこの裏ワザっぽさ。もっと普通にアップデートできてほしい・・・。

そしたら今度はeclipse起動時に

this android sdk requires android developer toolkit version X.X.X or above....

と怒られ、今までのプロジェクト全てビルドが通らなくなった。

eclipseのHelp→Install New Softwareのダイアログで
https://dl-ssl.google.com/android/eclipse/
からAndroid Development Tools
をインストール(アップデート)して解決。
プログラミング | トラックバック(0) | コメント(0) | page top↑
Javaで配列をソートした時のインデックスを返したい
2011/11/12 (Sat) 11:14:57
Javaで、double値を持つ配列、たとえば

double[] a = new double[3];
a[0] = 4.5;
a[1] = 0.1;
a[2] = 8.3;

という配列aに対して、中身の降順にソートした時の添え字の配列、
この例だと{2, 0, 1}を返したい時に作ったメソッド。
もっとシンプルな方法はあるかな?

    // arrayを降順に並べ替えた時のindexを返す
    int[] sortedIndex(double[] array) {
        int len = array.length;
        int[] order = new int[len];
        Map<Integer, Double> map = new HashMap<Integer, Double>();
        for (int i = 0; i < len; i++) {
            map.put(i, array[i]);
        }
        List<Map.Entry<Integer, Double>> entries = new ArrayList<Map.Entry<Integer, Double>>(
                map.entrySet());
        Collections.sort(entries, new Comparator<Map.Entry<Integer, Double>>() {
            @Override
            public int compare(Entry<Integer, Double> o1, Entry<Integer, Double> o2) {
                return (o2.getValue()).compareTo(o1.getValue());
            }
        });
        int i = 0;
        for (Map.Entry<Integer, Double> entry : entries) {
            order[i++] = entry.getKey();
        }
        return order;
    }

こちらのページを参考にさせていただきました。
javaeee.blogspot.com/2009/06/hashmap-value.html
プログラミング | トラックバック(0) | コメント(0) | page top↑
eclipseでのAndroidNDKビルド環境(Windows) javah編
2011/10/29 (Sat) 05:02:49
NDK開発環境整備の続き。
昨日の作業でCのソースファイルのビルドは自動でできるようになったけれど、
ついでにNative関数のヘッダファイルを作成するためにコマンドラインからjavahを実行するのまでeclipse上でできたらいいなと思ってbuild.xmlを作成することにした。

しかし、

<target name="makeh">
<javah classpath="classes" outputfile="jni/ヘッダファイル名.h">
<class name="クラス名"/>
</javah>
</target>

などと記述してAnt実行しても"can't load javah"と怒られる。
パスがおかしくてjavahが読めてないのだろうが、どう設定したらいいのかわからない。
コマンドラインからならjavahは通るのに何でだろう・・・と、
まともに解決するのは諦めて、build.xmlを

<target name="makeh">
<exec executable="cmd">
<arg value="/c" />
<arg value="makeh.bat" />
</exec>
</target>

としてmakeh.batの中身を
javah -classpath bin -d jni クラス名
として無事に動いた。
どうもやっつけな感があるが、とにかくやりたいことはできたのでよしとしよう。

昨日と今日の作業で、ndk-buildやjavahのためにターミナルを開かなくて良くなった。
別にコマンド打つのが嫌いなわけじゃないけれど、eclipseとターミナルを「両方」開くのが嫌なので。
これでやっとコーディングに入れる。
プログラミング | トラックバック(0) | コメント(0) | page top↑
eclipseでのAndroidNDKビルド環境(Windows)
2011/10/28 (Fri) 00:59:35
Android開発でndk-buildを使うため、Cygwinのインストールやら何やら苦労してCygwinターミナルからCのビルドはどうにかできるようになったが、eclipseだけでビルド&実行できないのは少々めんどい。
http://blog.cnu.jp/2011/07/05/build-ndk-in-eclipse/
まさにこのページと同じことがやりたいと思ったけれど、自分の環境はWindowsだからndk-buildが通らなくてしばらく困った。

設定は基本的に上のページの通りにやればいいのだがWindowsだとCygwin経由で実行するため、
新規ビルダー作成で

ロケーション:c:\cygwin\bin\bash.exe
作業ディレクトリ:${workspace_loc:/プロジェクトディレクトリ/jni}
引数:/cygdrive/c/bin/android-ndk-r6b/ndk-build -B

として、この新規ビルダーの優先順位(?)を上げてようやくうまくいった。

あ、あとWindowsの環境変数PATHに
C:\cygwin\bin;C:\cygwin\usr\bin
を追加しておかないとndk-buildの中身で失敗する。

これでビルドの手間がだいぶ省けて快適になったー。

ていうか本題のコーディングに入る前に今夜はこれで終わってしまったよ・・・もう眠い・・・
ていうかこんな時間かけて苦労しなくてもCygwinのターミナルから操作すれば少し手間なだけで用は済むのだけれどね。
でもでも、これで明日からの開発スピードが上がるはず!
と信じよう。
プログラミング | トラックバック(0) | コメント(0) | page top↑
Cの前置演算子・後置演算子について
2011/10/06 (Thu) 22:46:22
初歩的なことかもしれないけれど、今日学んだこと。
必要があって
int a[3] = {0, 1, 2};
int test;

int pos = 0;
test = a[pos++] + a[pos++];
というようなコードを書いた。
後置演算子のインクリメントはa[pos++]が評価された直後に行われると思っていたのでこれは
test = a[0] + a[1]
を期待して書いたコードだったのだが、違うらしい。

インクリメントは一行(「式」、ということか?)の後に評価されるようなので
実際は
test = a[0] + a[0]
で、ここでposの値は2回インクリメントされて2となる。
プログラミング | トラックバック(0) | コメント(0) | page top↑
前ページ | ホーム | 次ページ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。