就職活動のためあまりいじれていない現状です。
いつのまにか2000hitこえてた・・・!
終わったらぼちぼち再開していこうと思っています。
2011年3月29日火曜日
2011年2月15日火曜日
androidのファイル入出力、Intentについて
ファイル出力
context.openFileOutput(sFileName,Context.MODE_PRIVATE);
第一引数はファイル名で第二引数はアクセスの種類 自身のアクセスのみか外部からのアクセスを許可するかなどを設定できる
ファイル入力
context.openFileInput(sFileName);
第一引数はファイル名
アンドロイドはアプリごとに固有のフォルダを作成しているのでそのフォルダのファイルを扱う場合はフルパスの必要がない。SDカードの場合などはフルパスの必要有り
このファイル入出力をひとつのクラスで管理しようとしてはまってしまった
openFileOutputはcontextのパブリックメソッドかーとリファレンス読んで理解
じゃあcontext継承して入出力管理すりゃいいかと何故か考えてしまった・・・
継承したクラスからopenFileInputとか読んでもnullPointerの例外が
この継承したクラスはアプリ情報持ってないですし無理なの当たり前と気付くのに2時間
なにやってんだろ・・・
つまり入出力管理するにはアプリ情報が必要なのでを他クラスで入出力管理する場合はContextを渡してからファイル処理する必要があるということです。
それでクラスのコンストラクタにContextを渡して処理することにより解決
この渡してもらったContextからopenFileInputなどすればOK
もうひとつIntentのPutExtraについて
intentで値を渡す場合はputExtra("name",value)という感じにする
様々な型のオーバーロードが用意されている
毎回値を変えていく設計をしたときにはまった
putExtra("name",value)のvalueが呼ばれるたびに値が変わっていく仕様でコーディングしていたときに
値が初回のputExtraから更新されないということに。
PendingIntent contentIntent01 = PendingIntent.getActivity(this, 0, intent01, 0);
intentからpendingIntentを作成する際のgetActivitiyに問題があった。
第四引数が情報の更新をするかどうかのフラグなんだがよく調べずに0入れていた
ここをPendingIntent.FLAG_UPDATE_CURRENTに変えると更新されるように。
こっちはぐぐったら同じようなことにはまっている人がいてた
その人も書いてたけどよく調べてから実装しようと。
心がけます・・・
context.openFileOutput(sFileName,Context.MODE_PRIVATE);
第一引数はファイル名で第二引数はアクセスの種類 自身のアクセスのみか外部からのアクセスを許可するかなどを設定できる
ファイル入力
context.openFileInput(sFileName);
第一引数はファイル名
アンドロイドはアプリごとに固有のフォルダを作成しているのでそのフォルダのファイルを扱う場合はフルパスの必要がない。SDカードの場合などはフルパスの必要有り
このファイル入出力をひとつのクラスで管理しようとしてはまってしまった
openFileOutputはcontextのパブリックメソッドかーとリファレンス読んで理解
じゃあcontext継承して入出力管理すりゃいいかと何故か考えてしまった・・・
継承したクラスからopenFileInputとか読んでもnullPointerの例外が
この継承したクラスはアプリ情報持ってないですし無理なの当たり前と気付くのに2時間
なにやってんだろ・・・
つまり入出力管理するにはアプリ情報が必要なのでを他クラスで入出力管理する場合はContextを渡してからファイル処理する必要があるということです。
それでクラスのコンストラクタにContextを渡して処理することにより解決
この渡してもらったContextからopenFileInputなどすればOK
もうひとつIntentのPutExtraについて
intentで値を渡す場合はputExtra("name",value)という感じにする
様々な型のオーバーロードが用意されている
毎回値を変えていく設計をしたときにはまった
putExtra("name",value)のvalueが呼ばれるたびに値が変わっていく仕様でコーディングしていたときに
値が初回のputExtraから更新されないということに。
PendingIntent contentIntent01 = PendingIntent.getActivity(this, 0, intent01, 0);
intentからpendingIntentを作成する際のgetActivitiyに問題があった。
第四引数が情報の更新をするかどうかのフラグなんだがよく調べずに0入れていた
ここをPendingIntent.FLAG_UPDATE_CURRENTに変えると更新されるように。
こっちはぐぐったら同じようなことにはまっている人がいてた
その人も書いてたけどよく調べてから実装しようと。
心がけます・・・
2011年1月20日木曜日
PCとAndroidの通信(BlueTooth)がわからん
AndroidHackなど読みつつやってみたが。。。
TeraTermにてBlueToothで使用している仮想シリアルポートを指定して通信をはじめるとしっかりデータのやりとりはできている。
しかし.NETFrameworkとC#で作った簡単なシリアル通信プログラムだとなぜかデータが受信しない
1回だけデータを受け取ったことはあるがそれっきり受け取らない・・・
よーわからん!
TeraTermにてBlueToothで使用している仮想シリアルポートを指定して通信をはじめるとしっかりデータのやりとりはできている。
しかし.NETFrameworkとC#で作った簡単なシリアル通信プログラムだとなぜかデータが受信しない
1回だけデータを受け取ったことはあるがそれっきり受け取らない・・・
よーわからん!
2011年1月3日月曜日
android.widget.Buttonの座標を設定する方法2
前回absoluteLayoutを使って実装したものを紹介したのですがもっと簡単なやつありました。
void android.view.View.layout(int l, int t, int r, int b)
Viewに対してleft,top,right,bottomを指定できます。
これなら他のLayoutでも可能っぽい。
試しにLinearLayoutで作ってみました。
void android.view.View.layout(int l, int t, int r, int b)
Viewに対してleft,top,right,bottomを指定できます。
これなら他のLayoutでも可能っぽい。
試しにLinearLayoutで作ってみました。
import android.app.Activity; import android.os.Bundle; import android.widget.LinearLayout; import android.widget.Button; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.View.OnTouchListener; /** * レイアウトの配置の仕方のテスト クリック、タッチ、ロングタッチイベントの呼び出し順序確認 * * @author kuro */ public class AndroidFormTest extends Activity implements OnClickListener, OnLongClickListener, OnTouchListener { private Button button1; private int mState = 0; private int offsetX = 0;// ボタンクリックしたスクリーンのX座標とボタンのX座標の差分 private int offsetY = 0;// ボタンクリックしたスクリーンのY座標とボタンのY座標の差分 private final int STATE_NONE = 0; private final int STATE_DRAG = 1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.main); LinearLayout linearLayout = new LinearLayout(this); setContentView(linearLayout); //ボタン作成 button1 = new Button(this); // 各イベントリスナの登録 button1.setOnClickListener(this); button1.setOnLongClickListener(this); button1.setOnTouchListener(this); linearLayout.addView(button1, new LinearLayout.LayoutParams(150,50)); button1.setText(button1.getLeft() + "," + button1.getTop()); } @Override public void onClick(View v) { // TODO 自動生成されたメソッド・スタブ button1.setText("onClick"); } @Override public boolean onLongClick(View v) { // TODO 自動生成されたメソッド・スタブ button1.setText("onLongClick"); return false; } @Override public boolean onTouch(View v, MotionEvent event) { // TODO 自動生成されたメソッド・スタブ // ドラッグ switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: offsetX = (int) event.getX(); offsetY = (int) event.getY(); mState = STATE_DRAG; break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_POINTER_UP: mState = STATE_NONE; break; case MotionEvent.ACTION_MOVE: if (mState == STATE_DRAG) { int pointX, pointY; pointX = (int) event.getRawX() - offsetX; //ステータスバーの取得方法が不明のため直打ち(要変更) pointY = (int) event.getRawY() - (offsetY + 50); button1.layout(pointX, pointY, pointX + button1.getWidth(), pointY + button1.getHeight()); } break; } return false; } }
登録:
投稿 (Atom)