2011年4月24日日曜日

JavaのMapの動作

ちょっとJavaでMapの動作について気になったからテストしてみた。
気になったことはMapに同じキーでputしてからgetするとデータはどうなっちゃうのかなって。
結果としては、Mapはあとから同じキーでputされると以前設定されていた内容に上書きしてくれる。
Javadocにもそう書いてあった。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Map.html#put(K, V)

Map map = new HashMap();

map.put(1, "1st");
map.put(2, "2nd");
map.put(3, "3rd");
map.put(4, "4th");
map.put(5, "5th");
map.put(6, "6th");
map.put(1, "いち");


for (int i = 1; i <= 6; i++) 
{
      System.out.println(map.get(i)); 
}  

2011年4月23日土曜日

Javaのコールバック

abstractでextendsしたクラスへのコールバック?と、interfaceを使ったコールバックだとabstractの方が早い。
Core-i5で5倍ほど差が出た。
多分Android上だともっと差がでるんだろうかな。




・AbstractThread.java
public abstract class AbstractThread extends Thread implements Runnable {

    abstract public void run();

}

・CallbackThread.java
public class CallbackThread extends Thread implements Runnable {

    public interface CallBack {
        void onCallback(int value);
    }

    private CallBack lis;

    void setCallBack(CallBack listener) {
        this.lis = listener;
    }

    @Override
    public void run() {

        long startTime = System.nanoTime();
        for (int i = 0; i < Main.LOOP; i++) {
            if (lis != null) {
                lis.onCallback(i);
            }
        }

        long procTime = System.nanoTime() - startTime;
        System.out.println("Callback:" + procTime / Main.LOOP + "[ns]");

    }

}
・Main.java
public class Main {

    public static void main(String[] args) {

        CallbackThread thread = new CallbackThread();

        CallbackThread.CallBack call = new CallBack() {

            @Override
            public void onCallback(int value) {
                // System.out.println(value);
            }
        };

        thread.setCallBack(call);
        thread.start();

        AbstractThread athread = new AbstractThread() {

            @Override
            public void run() {
                long startTime = System.nanoTime();
                for (int i = 0; i < LOOP; i++) {
                    // System.out.println(i);
                }

                long procTime = System.nanoTime() - startTime;
                System.out.println("Abstract:" + procTime / LOOP + "[ns]");
            }
        };
        athread.start();
    }
}

2011年4月12日火曜日

XOOMとOptimus Padを触ってみた

Optimus Padを買いました。
そしたら後輩がXOOMを買いました。

なので、ちょっと触って比べてみた。

・大きさ
XOOMは画面が10.1インチでOptimus Padは8.9インチ。
ただし、寸法的にはXOOMが幅で1センチほど大きいだけ。
大きさとしてはほぼ同じくらいに感じました。
それでも、XOOMはOptimusよりもでかい画面なので、画面周りの枠が細かったです。

・画面
そのサイズの違う画面。
輝度としてはXOOMの方が少し暗い感じ。画面サイズが大きい分でしょうか?
発色としては好みが分かれそうな感じ。
XOOMは少し淡い感じで、Optimusは色がきつい感じな印象でした。

・キーボード
XOOMとOptimus Padでなぜかキーボードの挙動が違いました。
XOOMは入力切り替えに表示される文字が英字キーボード表示時と、数字キーボード表示時は同じだったのですが、
Optimus Padは数字キーボード表示時に半角/全角で選べるようになりました。
見た目は同じなのですが、中身がちょっと違って意外です。どっちが新しいんだ?

・雑感
お昼休みとラーメン屋でちょっと比べただけなのであまり詳しくは観ていないのですが、
ほぼ同じといった印象。
重さで選ぶなら、Optimus。画面の大きさで選ぶならXOOM。
初期出資が少ないのを選ぶならOptimus。維持費で選ぶならXOOM。
といった感じでしょうか。
今度もうちょっと詳しく比べてみようかと思います。

2011年4月8日金曜日

通知バーを消したり出したりする

通知バーを出したり消したりする方法
忘れないようにメモ

//消す場合
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

//出す場合
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

2011年3月27日日曜日

Androidでアプリのサイズを取得する方法

Androidのアプリのサイズを取得する方法をメモ。
IPackageStatsObserverで取得が可能なようです。
ただ残念ながら非公開APIらしく、標準では取得が出来ないようなのでちょっと工夫が必要。

IPackageStatsObserverを使用する方法。
参考サイト リンク1リンク2

IPackageStatsObserverを使えるようにする方法

  1. プロジェクトのsrcにandroid.content.pmのパッケージを作成する
  2. IPackageStatsObserver.aidlPackageStats.aidlの2つのAIDLファイルをコピーして先のパッケージへ追加する

アプリのサイズを取得する方法
  1. AndroidManifest.xmlへ<uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>を追加する
  2. 以下のコードで取得が可能

Method getPackageSizeInfo = 
    packageManager.getClass().getMethod("getPackageSizeInfo", 
                                        String.class,
     IPackageStatsObserver.class);

getPackageSizeInfo.invoke(packageManager, info.packageName, new IPackageStatsObserver.Stub() {
    @Override
    public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) 
    throws RemoteException {
    
        Log.i("AppSize", "codeSize: " + pStats.codeSize);
    }
});


2011年2月27日日曜日

Conversion to Dalvik format failed with error 1

Androidでプロジェクトのフォルダ構成を変更していたら


Conversion to Dalvik format failed with error 1
と表示され、コンパイルが通らなくなった。


ネットを調べるとプロジェクトをクリーンするだとか、Javaのコンパイラーのバージョンを変えるといいとかとあったけど、自分の場合はJava Build PathでAndroidのライブラリにチェックが入っていないのが問題だったようだ。

なぜ、チェックが外れたのかは謎。フォルダ構成をいじったのがまずかったのか?

2011年2月22日火曜日

MeeGoを試してみて

とりあえず1〜2時間ほどMeeGoをNetbookに入れて遊んでみたので、
その時の個人の主観としての感想をまとめてみる。


MeeGo v1.1 for Netbooksを試してみた

昨日Qtの勉強会へ行って来た際に色々話題にあがっていたMeeGoを家で寝かしてあったNetbookで試してみました

詳細は続きから


2011年2月21日月曜日

第1回関東Qt勉強会へ行って来た


第1回関東Qt勉強会が2/21に大井町であったので行って来た
そのときのメモを公開

詳細はつづきから

2011年2月16日水曜日

ドロイドくんフィギュアでUSBメモリを作った


前回作成したUSB変換機。これの頭部を利用してUSBメモリを作ってみました
なんとアクセスランプとして目が光ります!

詳細は以下から


2011年2月14日月曜日

ドロイドくんUSB変換機をつくってみた



われらがAndroiderのアイドルの緑の彼
名前は無いそうですが、勝手にドロイドくんと呼んでます。
かれのフィギュアを何個か買ったので1台生け贄に捧げてUSB変換機を召還してみました

詳しくはつづきから


2011年2月11日金曜日

横浜Androidプラットフォーム部第6回勉強会のメモ


横浜Androidプラットフォーム部第6回勉強会が2/11に石川町でありました。
その際の自分用のメモを公開します。ごにょごにょと書いてあるところはメモが追いつかなかった箇所。後日資料が出て来てから考えよう。

長いので詳細はつづきから。


2011年2月10日木曜日

ラジコン操縦アプリ

本当にしょうもない事なのですが、以前ラジコン操縦アプリをAndroid Marketに公開しました。
もちろん、ボードがのったラジコンが必須となるのですが、なぜかアクティブインストールが
11件(執筆時点)もあります。パーセンテージとしては23%です。
いったい誰がダウンロードしているのか検討も付きません。
4〜5件は自分で把握しているのですが・・・
意外と物好きな方も居るという事が分かった次第です。

2011年2月2日水曜日

Android -> 無線LAN -> Arduino

今日もロボ部な活動

最近やってるのは個人でも手が出せそうな値段で作れるロボット。
ただ、ロボ部のメンバーがもっと安く作れそうな構成を出しちゃってるから、
単に世の中によく出て来てるArduinoを使ってるだけって状態です。

構成としては、市販のUSB給電で動くアクセスポイントを使って、
イーサネットシールド経由でArduinoの無線コンバーター化する。
そんで、そのアクセスポイントにAndroidがつながってArduinoを操作するといった感じです。

現状



購入品はつづきから

2011年1月31日月曜日

Arduinoのイーサネットシールドがおかしい

今日は少しAndroidの会横浜支部 ロボ部らしい活動をします。
今がんばって個人レベルで買えるロボを作ろうとがんばっています。
予算としては1万円くらいで一通りそろえられるもので、考えてます。
それで今日はモーターを回すための作業をしていたのですが、
どうもイーサネットシールドが怪しい動きをしたのでまとめ。

詳しくは続きから

2011年1月27日木曜日

AndroidのUDPソケットのソースを読んでみた


ラジコンのカメラ映像を受信する箇所がなぜか1.6までの端末だとうまく動かない問題がありました。
ちょっと実装に問題が見当たらなかったので、Androidのソースを読んでみました。

詳しくはつづきから

2011年1月23日日曜日

Androidマーケットで検索させる方法

Intentを投げてマーケットで検索をする方法

/**
 * マーケットでアプリを検索
 * @param packageName パッケージ名
 */
private void viewMarket(String packageName) {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:" + packageName));
    startActivity(intent);
}


macからwindows上のVMWareへSSHで接続する

組み込みAndroidの開発を始めようかと思ってるのですが、
最近のメイン機がmac book airなのでビルドする際のCPUパワー、ソースを保存するストレージに心配があったので、Windows7上にVMWareで仮想マシンをたて、その中で作業をしようと思います。でも、キーボードやら、マウスやらを別途用意したくなかったので、macから操作できるようにしようとおもいます。

その際の作業記録はつづきから

2011年1月19日水曜日

HT-03AがWindows7 64bit版で認識してくれなくなった


Androidは比較的に開発環境が整備されています。
組み込み系だと1から環境を作ってソース書いてコンパイルして、実行して、アレ動かない?ってのがザラかと思います。
でもAndroidだとSDK落として来て実機をUSBでさして即使える環境が出来上がります。
そんなAndroidなのにUSBで認識してくれなくなりました。
その際に色々ためしてみた備忘録です。結果から言えばまだ動いていません。

詳しくはつづきから


2011年1月18日火曜日

Macbook airを使っての感想


年末にMacBook Airの最小構成をヨドバシで衝動買いしてしばらくたちましたが、
結構ガリガリと使っています。なかなかよい買い物ができました。
そこで、2ヶ月ほど使ってみての体感的な感想を書いてみたいと思います。

感想は続きから