2014年2月12日水曜日

久しぶりにAndroidプログラミングserial monitor(4)text表示

その3はこちら.

Android SDKはjavaで書くことになりますが、わたしはjavaって全然知らないんです.売り物のsoftを書いた経験がほぼゼロなので、わざわざjavaを使う場面がありませんでした.しかしobject志向言語って作法を熟知しないと手出しできないので敷居が高くて苦手です.さらにAndroid 4.xにはfragmentというのがあって「とある場面では関数XXX()をシステムが呼びます」という作法が多々あって、作法作法とうるさいです.fragmentにはつきあいきれないので断念しちゃおうっと.

さて、serialから受信したcharacterをtablet画面に表示したいのですが、どーやったら文字を画面に表示できるのかすら知らないので練習してみました.

eclipseで生成したprojectのMainActivity.javaをこのように書き変えました.
package com.example.ade;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView text = (TextView) findViewById(R.id.textView1);
int i;
        char[] textbuf;
        textbuf = new char[10];
for(i=0;i<10;i++){textbuf[i]='v';}
for(i=3;i<=7;i++){textbuf[i]='S';}
text.append(String.valueOf(textbuf)+"\n"); // (1)
textbuf[5]=0;
text.append(String.valueOf(textbuf)+"\n"); // (2)
}
}

TextView text = (TextView) findViewById(R.id.textView1);
まずこれが重要です.textという名の文字列objectを生成しているんですが、そのついでに画面の表示枠(textView1)と結びつけています.その結果、textに文字列をつっこむと画面に表示されるようになります.textView1はres/layout/activity_main.xmlに記述されてます.TextViewというobjectを画面に貼りつけるとeclipseが勝手に名前をつけてくれますが、その名前がtextView1なんです.

for(i=0;i<10;i++){textbuf[i]='v';}
for(i=3;i<=7;i++){textbuf[i]='S';}
文字列を”vvvSSSSSvv"にセットしてます.C言語的には、末尾をゼロにしてないけど平気なの?と心配になります.

text.append(String.valueOf(textbuf)+"\n"); // (1)
text.append("abc");などとすると画面にabcと表示されます.この場合は画面にvvvSSSSSvvと表示されます.C言語なら文字列の末尾にゼロを入れとかないと変なことになりますが、javaではその心配はないようです.便利かも.

textbuf[5]=0;
text.append(String.valueOf(textbuf)+"\n"); // (2)
それなら6文字目をゼロにしたらどうなるかを試してみましたら、表示はvvvSSSSvvになりました.つまりjavaでは、文字列の途中にゼロが登場しても、ゼロを乗り越えて末尾まで表示するようです.ゼロは表示されずです.

printf()はどこにもないjavaなのでした.

かしこ

人気ブログランキングへ

5 件のコメント:

  1. ソニーOB:佐藤2014年2月12日 16:03

    日経とソニーは未だに仲が良いのか。業績が悪くても意外と攻撃的な記事にはしない日経ですが、日経ビジネスOn Lineではこんな記事が出ています。

    「コストの呪縛から技術者を解き放つ平井ソニー」ということで3つのお題があり、その一つがハイレゾウォークマンの話。記事が今年の1月21日。発売が去年の10月中旬で、”日本では、2013年秋に発売されたハイレゾ対応のオーディオ、特にハイレゾウォークマンが飛ぶように売れています。”
    平井さんは「mora(モーラ、ソニー系の音楽配信サイト)でハイレゾ音源のダウンロードサービスを始めたことも大きかったです。それによってハイレゾに対する潜在的な需要が明らかになりましたから。私は少し前から、日本市場では、若いみなさんも「音が良い」ことに重点を置くようになってきたようだと察知していましたが、まさかこれほどの勢いでハイレゾが認識されるとは、予想していませんでした。日本のユーザーは今や、世界で一番、クオリティに対して敏感です。」
    今まで音楽配信って16kHzまでで大幅カットしていたし、なんの意味があるのやらと(ファイルは軽いですが)。
    ハイレゾを良とするカスタマーがウォークマンで聴くようなカスタマーだろうか?
    なんか記事と言うよりはステマのように感じてしまいます。ただ、私は会員ではないので全文読めないから結論はわかりません。
    ちなみにウォークマンFシリーズのHPからハイレゾオーディオとはというリンクに行くと茂木健一郎が科学者として語っています。もうこれだけで萎えてしまいます。

    http://business.nikkeibp.co.jp/article/opinion/20140115/258259/?n_cid=nbpnbo_leaf_bn

    返信削除
    返信
    1. ハイレゾをwalkmanで聴きたいとは、ムダナテイコウヲヤメヨと言いたいですが、そんなにいるとは、ひとまず驚いておきます.

      削除
    2. 茂木氏 と言うと 
      以前お勉強した磁性関連の基本図書は著者がそのようなお名前でした。
      何等かの関連がありますでしょうか?

      削除
    3. ソニーOB:佐藤2014年2月12日 20:31

      茂木健一郎氏と磁性は無関係ですので、同姓同名でいるのか近い名前ではないかと思われます。

      削除
    4. 脳芸人の茂木は忌まわしいです

      削除