忍者ブログ

2007/03/04開始。ソフトウェア管理やDelerer SEの作者であるおにぎりくんの試行錯誤の記録です。
2024
前の月へ 04 : 12345678910111213141516171819202122232425262728293031 : 06 次の月へ
2  3  4  5  6  7  8  9  10  11  12 
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

JSONObject#toString ()
この中ではJSONStringerを作って、writeToを呼んで、文字列生成している。

    633     @Override public String toString() {
    634         try {
    635             JSONStringer stringer = new JSONStringer();
    636             writeTo(stringer);
    637             return stringer.toString();
    638         } catch (JSONException e) {
    639             return null;
    640         }
    641     }

writeTo()では、JSONStringerに登録されたキーと値をオブジェクトとして登録している。これなら、自分でも書けそう。

    664     void writeTo(JSONStringer stringer) throws JSONException {
    665         stringer.object();
    666         for (Map.Entry<String, Object> entry : nameValuePairs.entrySet()) {
    667             stringer.key(entry.getKey()).value(entry.getValue());
    668         }
    669         stringer.endObject();
    670     }

JSONArray#toString()
実にJSONObjectと同一。writeToを呼び、文字列生成している。
writeTo()では、JSONStringerに登録された値を配列として登録している。これも自分でできそう。

    569     void writeTo(JSONStringer stringer) throws JSONException {
    570         stringer.array();
    571         for (Object value : values) {
    572             stringer.value(value);
    573         }
    574         stringer.endArray();
    575     }

ここから検索して調べました。便利。
Androidソースコード検索サービス
http://tools.oesf.biz/android-2.2_r1.1/

追記:
ただし、JSONStringerは「ほとんどのアプリケーション開発者は無視すべき」とされているクラスなので、別の方法を取ったほうがよい。
http://developer.android.com/intl/ja/reference/org/json/JSONStringer.html

PR

私のPCではよく音が出なくなるので、忘れないように記録しておく。

現象:

タスクトレイのスピーカーアイコン(音量アイコン)はバツになってもいないのに、音楽の再生に失敗する。
GOM Player だと、「コーデックがありません」となるけど、いつもは再生できているしコーデックは入ってるはずなんだけどなぁ。
コントロールパネル>システムとセキュリティ>アクションセンター>トラブルシューティング>オーディオ再生のトラブルシューティング でも、解決できない。

対処法:

オーディオサービスを再起動する。

  1. コントロールパネル>システムとセキュリティ>管理ツール>サービス を起動する。
  2. Windows Audio Endpoint Builderを選択し、サービスの再起動をクリック。
  3. Windows Audioも再起動される旨確認されるので、OKする。
  4. 再起動を待つ。
  5. 完了。

OpenCVをPC向けソフトウェアで使ったことがあるのですが、Android向けのポーティングが公式に出ていることがわかったので試してみました。そのメモ。

パッケージはここからダウンロード

http://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.3.1/

インストール

パッケージにはOpenCVディレクトリとsampleディレクトリがあります。どちらもまとめてEclipseのワークスペースに放り込んでおけば使えます。$(workspace)/OpenCV-2.3.1/とでも。このフォルダはEclipseプロジェクトの形式になっていて、Eclipseからインポートして使います。

サンプルを試す

sampleディレクトリを$(workspace)/opencv-sample/と適当にリネームして、Eclipseからインポート。ビルドエラーが出ていたので、原因を見て解決しておきます。(今回はプロジェクトのプロパティにあるOpenCVライブラリディレクトリのパスが一階層ずれていて、../../OpenCV-2.3.1から../OpenCV-2.3.1に直しました。配置がまずかったかな。)

あとは実行>Androidアプリケーションです。apkファイルが6MB程度なので、インストールにも時間がかかる。サンプルが動作します。15パズルは、カメラの歪みのせいで、カメラを動かすと15マスが微妙に動かした方向と別の動きをして気持ち悪い感じでした…。

参考ページ

私の大好きなFireworksにはナイフツールという便利な機能が存在します。
パスで表現される図形を、任意の直線で2つに分割するというものです。
たとえば↓
http://d.hatena.ne.jp/nomuyoguruto/20090730

その要領で、OpenGLの頂点配列で表される図形F(四角形と五角形)を、任意の直線(またはFの辺上にある任意の二点)で分割したいのですが、そんな操作はOpenGLで提供されてません。検索しても同じ事をしている人を見つけられませんでした。私は何か間違ったことをやろうとしてるのかも。。。(直感的で便利な操作だと思うのだけど)

なければ作るしかない。あたまがわるいので、場合わけしてswitchでごにょごにょするしか思いつきません。これじゃぁ五角形のときに分岐が10個に。複雑度測りたくありません。

Androidアプリでボタンの使用可能・不可能を設定するためのコード片。「ボタンを押したら、押したボタンを使用不可能にする」場合、ボタンのハイライト状態がそのままになってしまいます。onClickイベントの処理内でsetEnable(false)しているのがよくないので、Handlerでタイミングをずらしてます。

ボタンの使用可能・不可能を設定するハンドラ

private Handler setEnableHandler = new Handler() {
	public void handleMessage(Message msg) {
		View v = (View) msg.obj;
		v.setEnabled(msg.arg1 == 1);
	}
};

ハンドラを呼び出す

msg = new Message();
msg.arg1 = 0;
msg.obj = btn;
setEnableHandler.sendMessage(msg);

SyntaxHighlighterを初めて使った。どきどき。

スポンサード・リンク
フリーソフト指向::開発日記 by LapisCactus
忍者ブログ | [PR]

今日の聖書
自己紹介
名前:
LapisCactus (おにぎりくん)
Twitter:
Mail:
onigirikun_hsp@hotmail.com
自己紹介:
ふつうのしすてむえんじにあ。
趣味で「ソフトウェア管理」や
「TextView」を作っています。
仕事でもコンピュータを触っているのに
趣味も同じという。
健康に悪いですね。
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
ブログ内検索
最新CM
[03/03 kusakari]
[11/12 おにぎりくん]
[11/08 れい]
アクセス解析