2011年3月30日水曜日

雑記7

どうも、69です。


久久久久々くらいですね。
最近、納期が間近でして
残業残業休日出勤という感じで・・・
で、今日は早く終わったので。


プログラム更新は、自分のやりたい項目から順次やっていこうかと思います。


Androidケータイ使って2週目ですが未だ慣れないです。
メールとか打つのが面倒で、面倒で。
そのうち慣れるかなぁ。


読みたい本があるけど全然進みません。


おしまい。

2011年3月24日木曜日

雑記7

どうも、69です。

今日も雑記です。。。
今週が終われば少しは落ち着くと思うので。

で、仕事で

赤い帽子

が攻めてきました。
もう、ぜんぜんお手上げ。。。

完全に資格だけになってしまった。
でも、やっぱり面白いな!と感じてます。

これを機に、ちょっと勉強再開しようかな?
でも、最近ゲームにもハマってて。

まぁ、まずはAndroid!
あ、仕事優先だった!!

おしまい。

2011年3月23日水曜日

雑記6

どうも、69です。

今日はなんかプログラム更新しようと思ってましたが・・・


仕事が終わらなくて・・・


また今度。


明日も長い一日になりそうだ。。。

おしまい。

2011年3月20日日曜日

Androidその23 ~アクティビティ2~

どうも、69です。

今日はお詫びが2点あります。

まず、ブログのタイトルの番号が適当となことです。

履歴が最新のものを出してくれなくて
「確か○番だ」
という感じでつけてしまし・・・

次に、ソフトバンクのiPhone以外のスマホユーザに対してです。

「なんで、ソフトバンクでiPhoneじゃないんだよ!」
って言っていたのに

GALAPAGOS

買っちゃいました。
うん、ガラパゴっちゃいました!!
やはり、自分で作ったアプリを自分でまずは使いたい、という事ね!

どうも、すいませんでした。。。


では、本題↓

アクティビティにはライフサイクルがあります。

生成されたら終わらなければいけない。
生まれたら死ぬ運命にある。

で、主要なメソッドは

onCreate(Bundle)
→生成時に呼ばれる。onSaveInstanceState()メソッドで保存した情報があれば、Bundleに。

onStart()
→アクティビティの表示

onResume()
→アクティビティがユーザの入力を受け入れる

onPause()
→アクティビティがバックグラウンドになる。メモリが少なくなると勝手に破棄される事がある

onStop()
→アクティビティがしばらく使われなかった時。メモリが少なくなると勝手に破棄される事がある

onRestart()
→onStop()の後に、他のアクティビティが終了することで再開

onDestroy()
→アクティビティの破棄

onSaveInstanceState(Bundle)
→インスタンスの状態の保存。アクティビティが破棄されても引数Bundleを利用して戻せる

onRestoreInstanceState(Bundle)
→インスタンスの状態を復元。onSaveInstanceState()メソッドで保存した値を復元できる

おしまい。

Androidその21 ~アクティビティ~

どうも、69です。

今日はAndroidアプリ作成の基礎をやろうかと。


教科書を変えてから、
Androidアプリ作成の方法が
若干違う・・・

なので、新教科書に則っていこうかと。

***********************************************************
アクティビティ(Activity)とは


画面を持った機能の単位


です。Androidではアクティビティ毎に状態を管理する仕組みがあります。
だいたいは、画面の遷移もアクティビティ単位で行います。

***********************************************************

今まで「~.java」というファイルを作ってきましたが
その中に

「class クラス名 extends Activity」

というのがありました。
「extends」は継承するってことで、訳すと

「クラス名classはActivityclassを継承します。
その中身を{}内に定義します。」

という感じです。
詳細はいつかJavaについてやろうと思ってます。
定義の中で

「onCreate()」メソッドを使ってアクティビティを生成します。

おしまい。

2011年3月18日金曜日

雑記5

どうも、69です。


お久しぶりです。
って言っても、何日振りだろ・・・


わからん!


やっぱりブログ休止ではなく
回数を減らすという方向にします。


自分の精神衛生上良くないことに気付きました。

というわけですので、よろしくお願いします。

おしまい。

2011年3月14日月曜日

Androidその21 ~自作3~

どうも、69です。

やっとできました。
簡単なものですが。


画面タッチを検出してそこに
画像を表示させるだけ

っていうホントに簡単なもの。
で、今までエラーしていたのは
Tomcat関係なさそう・・・
自分のミスでした。
具体的に言うと、TouchViewクラスからオブジェクトの生成をし忘れてまして。。


で、このソースを公開したら
しばらくブログ公開はストップしようかと。
うち、停電の地域に入ってるので。

では↓

*****Appli.java*******************************************

package com.blogspot.androidid.appli1;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

public class Appli1 extends Activity {
    /** Called when the activity is first created. */

private AppliView appliview;
private TickHandler tickHandler;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        appliview=new AppliView(this);
        setContentView(appliview);
    }
  
    @Override
    public void onResume(){
     super.onResume();
     tickHandler=new TickHandler();
     tickHandler.sleep(0);
    }
  
    @Override
    public void onPause(){
     super.onPause();
     tickHandler=null;
    }
  
    public class TickHandler extends Handler{
     @Override
     public void handleMessage(Message msg){
     appliview.invalidate();
     if(tickHandler != null) tickHandler.sleep(100);
     }
    
     public void sleep(long delayMills){
     removeMessages(0);
     sendMessageDelayed(obtainMessage(0),delayMills);
     }
    }
}

**********************************************************


*****AppliView.java******************************************

package com.blogspot.androidid.appli1;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.MotionEvent;

public class AppliView extends View{
private int X=0;
private int Y=0;
private int Action=-999;
private Bitmap image;

public AppliView(Context context){
super(context);
setBackgroundColor(Color.BLUE);

setFocusable(true);
Resources r=context.getResources();
image=BitmapFactory.decodeResource(
r,R.drawable.android);
}


@Override
protected void onDraw(Canvas canvas){
int w=image.getWidth();
int h=image.getHeight();
if(Action != -999)
canvas.drawBitmap(image,X-(w/2),Y-(h/2),null);
}

@Override
public boolean onTouchEvent(MotionEvent event){
X=(int)event.getX();
Y=(int)event.getY();
Action=event.getAction();
return true;
}
}


**********************************************************


解説はまた今度。いつかは未定ですが。

おしまい。

2011年3月11日金曜日

雑記4

どうも、69です。


最近、リンゴ病にかかりました。



Apple製品にはまったなと思った方、
おしい!


椎名林檎です。はまったのは。
なぜかは判りません。

ただ、いっつも流れてます。
『積木遊び』

YOUTUBEでみて更にはまってく・・・

おしまい。

2011年3月10日木曜日

Android20 ~初自力2~

どうも、69です。


初めての自分で考えたもの。


デバッグできない。
ググっても、Tomcatって誰?wって状態です。


ソースはあってそうですが。
動作確認が一番の楽しみなので。
それができるまでは、公開できない・・・


どこにいる!Tomcat!!!!

おしまい。

Android19~初自力~

どうも、69です。


今日は自分で考えたものを公開する






つもりでした。

ただ、デバッグがうまくいかないので
見送りになりそうです。

あと、自力って言っても
「コピペで作ろうなので」
過去のを参考にしてます。

初自力
もうちょっと待ってください。

おしまい。

2011年3月9日水曜日

雑記4

どうも、69です。


移設して
ちょこちょこ触ってますが…

いまだに、ブログの使い方慣れません。
まぁ、前のも使いこなしてはいませんでしたが。


で、関係ないですが
いろいろ興味があって
PHPやりたい。Javaやりたい。Oracleやりたい。
MySQLやりたい。ネットワークも勉強したい。サーバに強くなりたい。
LinuxもWindowsも。FXやってみたい。

で、ちょっとづつやっていこうと思います。
その過程もBlogにしようかとも思ってます。
で、Blog分けたほうがいいのかな~とか悩んでます。
朝も起きれないほど。

ま、なんくるないさ~。

おしまい。

Androidその18~タッチイベントの処理2~

どうも、69です。

早速前回 タッチイベントの処理 の解説です。

*****TouchEx.java***************************************

↓TouchExクラスの定義
public class TouchEx extends Activity {
    /** Called when the activity is first created. */

private TouchView touchView;→変数touchView。型はTouchView

private TickHandler tickHandler;→変数tickHandler。型はTickHandler

    //アプリの初期化
    @Override
    public void onCreate(Bundle android) {
        super.onCreate(android);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        touchView=new TouchView(this);→TouchViewオブジェクトの生成。引数:this(TouchEx)

        setContentView(touchView);→実画面に表示するビューの指定
    }
   
    //アプリの再開→onResumeメソッドの定義
    @Override
    public void onResume(){
     super.onResume();
     tickHandler = new TickHandler();→TickHandlerオブジェクトの生成

     tickHandler.sleep(0);→tickHandlerオブジェクトのsleepメソッドを利用

    }
   
    //アプリの一時停止→onPauseメソッド定義
    @Override
    public void onPause(){
     super.onPause();
     tickHandler=null;→tickHandlerを空(null)に。
    }
   
    //定期処理ハンドラ→TickHandlerクラスの定義
    public class TickHandler extends Handler{

     //ハンドルメッセージ→handlerMessageメソッドの定義
     @Override
     public void handleMessage(Message msg){

     touchView.invalidate();→touchViewオブジェクトのinvalidateメソッドを利用

     if(tickHandler != null)tickHandler.sleep(100);→もし「tickHandlerがnull」じゃなかったら「tickHandlerオブジェクトのsleepメソッドを引数100で利用」
     }
    
     //スリープ→sleepメソッドの定義
     public void sleep(long delayMills){
     removeMessages(0);→メッセージの削除
     sendMessageDelayed(obtainMessage(0),delayMills);→メッセージの送信
     }
    }
}


*************************************************

*****TouchView.java*******************************

//タッチイベントの処理→TouchViewクラスの定義
public class TouchView extends View{

↓変数touchX,touchY,touchAction,ballX,ballY,ballActionの宣言、初期値設定
private int touchX=0;
private int touchY=0;
private int touchAction=-999;
private int ballX=0;
private int ballY=0;
private int ballAction=-999;
 

//コンストラクタ
public TouchView(Context context){
super(context);
setBackgroundColor(Color.WHITE);

//フォーカス指定
setFocusable(true);→フォーカス有効化
}
 
//onDrawオブジェクトの定義 @Override
protected void onDraw(Canvas canvas){
String str;

//描画オブジェクトの生成
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setTextSize(32);

//タッチXY座標の描画
canvas.drawText("TouchXY>"+touchX+","+touchY, 0, 40*1, paint);

//タッチアクションの描画
str="NONE";

↓もし「touchActionがMotionEvent.ACTION_~」だったら「strにACTION_~を代入」 if(touchAction==MotionEvent.ACTION_DOWN) str="ACTION_DOWN";
if(touchAction==MotionEvent.ACTION_MOVE) str="ACTION_MOVE";
if(touchAction==MotionEvent.ACTION_UP) str="ACTION_UP";
if(touchAction==MotionEvent.ACTION_CANCEL) str="ACTION_CANCEL";
canvas.drawText("TouchAction>"+str, 0, 40*2, paint);

//ボールXY座標の描画
canvas.drawText("TrackballXY>"+ballX+","+ballY, 0, 40*3, paint);

//ボールアクションの描画
str="NONE";
if(ballAction==MotionEvent.ACTION_DOWN) str="ACTION_DOWN";
if(ballAction==MotionEvent.ACTION_MOVE) str="ACTION_MOVE";
if(ballAction==MotionEvent.ACTION_UP) str="ACTION_UP";
if(ballAction==MotionEvent.ACTION_CANCEL) str="ACTION_CANCEL";
canvas.drawText("TrackballAction>"+str, 0, 40*4, paint);
}

//タッチイベントの処理→onTouchEventの定義
@Override
public boolean onTouchEvent(MotionEvent event){
touchX=(int)event.getX();→x座標の取得
touchY=(int)event.getY();→y座標の取得
touchAction=event.getAction();→Actionの取得
return true;
}

//トラックボールイベントの処理
@Override
public boolean onTrackballEvent(MotionEvent event){
ballX=(int)(event.getX()*100);
ballY=(int)(event.getY()*100);
ballAction=event.getAction();
return true;
}

}


*************************************************
*****主に利用したパッケージ*****************



import android.app.Activity;
 void onCreate(Bundle android)→アプリの起動時に呼ばれる。引数:android 呼び出し時に渡されるデータ


 void requestWindowFeature(int featureID)→ウィンドウの特徴IDの指定。引数:ID


 void setContentView(View view)→実画面に表示するビューの指定。引数:ビュー

import android.os.Handler;
 void removeMessage(int ID)→メッセージの削除。引数:メッセージID



 boolean sendMessageDelayed(Message msg,long delayMillis)→メッセージの送信。引数:メッセージ,送信までの時間(ミリ秒)


 void handleMessage(Message msg)→メッセージ受信。引数:メッセージ


import android.view.View;
 boolean onTouchEvent(MotionEvent event)→タッチ発生時に呼ばれる。引数:タッチイベント。戻り値:処理が完了したか


 boolean onTrackballEvent(MotionEvent event)→トラックボールイベント発生時に呼ばれる。引数:ボールイベント。戻り値:処理が完了したか


import android.view.MotionEvent;

 float getX()→タッチイベントのX座標取得。戻り値:X座標


 float getY()→タッチイベントのY座標取得。戻り値:Y座標


 int getAction()→タッチイベントのアクション種別の取得。戻り値:種別
**********************************************************


今日のところは
こんなところです。


おしまい。

2011年3月8日火曜日

Androidその16 ~タッチイベントの処理~

どうも、69です。

移転後最初の
今日はタッチイベントの処理です。
この辺が終われば、ちょっとアプリっぽいの
作りたいと思います。


では、早速↓

本日用意するのは


TouchEx.java
TouchView,java


の二つです。

*****TouchEx.java*********************************


package info.webry.at.androidid.touchex;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Window;

public class TouchEx extends Activity {
    /** Called when the activity is first created. */

private TouchView touchView;
private TickHandler tickHandler;
    //アプリの初期化
    @Override
    public void onCreate(Bundle android) {
        super.onCreate(android);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        touchView=new TouchView(this);
        setContentView(touchView);
    }
  
    //アプリの再開
    @Override
    public void onResume(){
     super.onResume();
     tickHandler = new TickHandler();
     tickHandler.sleep(0);
    }
  
    //アプリの一時停止
    @Override
    public void onPause(){
     super.onPause();
     tickHandler=null;
    }
  
    //定期処理ハンドラ
    public class TickHandler extends Handler{
     //ハンドルメッセージ
     @Override
     public void handleMessage(Message msg){
     touchView.invalidate();
     if(tickHandler != null)tickHandler.sleep(100);
     }
    
     //スリープ
     public void sleep(long delayMills){
     removeMessages(0);
     sendMessageDelayed(obtainMessage(0),delayMills);
     }
    }
}


*************************************************

*****TouchView.java*******************************


package info.webry.at.androidid.touchex;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
import android.view.MotionEvent;

//タッチイベントの処理
public class TouchView extends View{
private int touchX=0;
private int touchY=0;
private int touchAction=-999;
private int ballX=0;
private int ballY=0;
private int ballAction=-999;

//コンストラクタ
public TouchView(Context context){
super(context);
setBackgroundColor(Color.WHITE);

//フォーカス指定
setFocusable(true);
}

@Override
protected void onDraw(Canvas canvas){
String str;

//描画オブジェクトの生成
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setTextSize(32);

//タッチXY座標の描画
canvas.drawText("TouchXY>"+touchX+","+touchY, 0, 40*1, paint);

//タッチアクションの描画
str="NONE";
if(touchAction==MotionEvent.ACTION_DOWN) str="ACTION_DOWN";
if(touchAction==MotionEvent.ACTION_MOVE) str="ACTION_MOVE";
if(touchAction==MotionEvent.ACTION_UP) str="ACTION_UP";
if(touchAction==MotionEvent.ACTION_CANCEL) str="ACTION_CANCEL";
canvas.drawText("TouchAction>"+str, 0, 40*2, paint);

//ボールXY座標の描画
canvas.drawText("TrackballXY>"+ballX+","+ballY, 0, 40*3, paint);

//ボールアクションの描画
str="NONE";
if(ballAction==MotionEvent.ACTION_DOWN) str="ACTION_DOWN";
if(ballAction==MotionEvent.ACTION_MOVE) str="ACTION_MOVE";
if(ballAction==MotionEvent.ACTION_UP) str="ACTION_UP";
if(ballAction==MotionEvent.ACTION_CANCEL) str="ACTION_CANCEL";
canvas.drawText("TrackballAction>"+str, 0, 40*4, paint);
}

//タッチイベントの処理
@Override
public boolean onTouchEvent(MotionEvent event){
touchX=(int)event.getX();
touchY=(int)event.getY();
touchAction=event.getAction();
return true;
}

//トラックボールイベントの処理
@Override
public boolean onTrackballEvent(MotionEvent event){
ballX=(int)(event.getX()*100);
ballY=(int)(event.getY()*100);
ballAction=event.getAction();
return true;
}

}


*************************************************

解説はまた次回。

おしまい。

2011年3月6日日曜日

雑記3

どうも、69です。

やっとAndroid分が移りました。
あと、Javaの分がちょっとまだ…


なんで、インポート形式、XMLだけなの。
or
なんで、エクスポート形式、datだけなの。(前ブログ)

ま、しょうがない。

おしまい。

Androidその15 ~キーイベントの処理2~

どうも、69です。

前回 キーイベントの処理 の解説です。

では↓


*****KeyEX.java************************************

public class KeyEx extends Activity {

private KeyView keyView;→キービューのフィールド変数定義
private TickHandler tickHandler;→定期処理ハンドラのフィールド変数定義

//アプリの初期化
@Override
public void onCreate(Bundle android) {
super.onCreate(android);
requestWindowFeature(Window.FEATURE_NO_TITLE);
keyView=new KeyView(this);→KeyViewクラスのコンストラクタ生成
setContentView(keyView);
}

//アプリの再開
@Override
//定期処理ハンドラの開始メソッドonResume()メソッドの定義
public void onResume(){
super.onResume();

//定期処理ハンドラの開始
tickHandler=new TickHandler();→TickHandlerクラスのコンストラクタ生成
tickHandler.sleep(0);→sleep()メソッド。引数:0
}

//アプリの一時停止
@Override
//onPause()メソッドの定義
public void onPause(){
super.onPause();

//定期処理ハンドラの停止
tickHandler=null;→tickHandlerを空にする
}

//定期処理ハンドラTickHandler()メソッドの定義
public class TickHandler extends Handler{
//定期処理
@Override
//handlerMessage()メソッドの定義
public void handleMessage(Message msg){
keyView.invalidate();→KeyViewオブジェクトのinvalidate()メソッドの呼び出し
if(tickHandler != null)tickHandler.sleep(100);→「 tickHandlerがnull 」なら「 tickHandlerオブジェクトのsleep()メソッドの引数:100を呼び出す 」
}

//スリープ処理のsleep()メソッドの定義
public void sleep(long delayMills){
removeMessages(0);→メッセージの削除。引数:メッセージID
sendMessageDelayed(obtainMessage(0),delayMills);→指定ミリ秒後にメッセージの送信
}
}
}
**************************************************


*****keyview.java************************************

//キーイベント処理のKeyViewクラスの定義
public class KeyView extends View{
private int keyCode=-999;→keyCode変数に「-999」 を代入(初期値)


//フォーカス指定→キーイベントが通知されるのはフォーカスを持っているビューのみ
setFocusable(true);→フォーカスの有効化
setFocusableInTouchMode(true);→タッチモード時のフォーカスの有効化
}


//キーコードの描画
String str="";→str変数を定義
if(keyCode==KeyEvent.KEYCODE_DPAD_UP) str="DPAD_UP";
↑「 keyCodeがKeyEvent.KEYCODE_DPAD_UP 」なら「 変数strに"DPAD_UP"を代入 」

if(keyCode==KeyEvent.KEYCODE_DPAD_DOWN) str="DPAD_DOWN";
↑「 keyCodeがKeyEvent.KEYCODE_DPAD_DOWN 」なら「 変数strに"DPAD_DOWN"を代入 」

if(keyCode==KeyEvent.KEYCODE_DPAD_LEFT) str="DPAD_LEFT";
↑「 keyCodeがKeyEvent.KEYCODE_DPAD_LEFT 」なら「 変数strに"DPAD_LEFT"を代入 」

if(keyCode==KeyEvent.KEYCODE_DPAD_RIGHT) str="DPAD_RIGHT";
↑「 keyCodeがKeyEvent.KEYCODE_DPAD_RIGHT 」なら「 変数strに"DPAD_RIGHT"を代入 」

canvas.drawText("KeyCode>"+keyCode+" "+str, 0, 40, paint);→変数strの表示
}

//キーダウンイベントの処理
@Override
//onKeyDown()メソッドの定義
public boolean onKeyDown(int keyCode,KeyEvent event){
this.keyCode=keyCode;
return super.onKeyDown(keyCode,event);
}

//キーアップイベントの処理
@Override
//onKeyUp()メソッドの定義
public boolean onKeyUp(int keyCode,KeyEvent event){
this.keyCode=-1;
return super.onKeyUp(keyCode,event);
}

}

**************************************************

*****主に利用したクラス*******************************


import android.os.Handler;
void removeMeessage(int ID)→メッセージの削除。引数:メッセージID
boolean sendMessageDelayed(Message msg,long delayMillis)→メッセージの送信。引数:メッセージ,送信するまでの時間(ミリ秒)
Message obtainMessage(int ID)→メッセージの取得。引数:メッセージID
void handleMessage(Message msg)→メッセージの受信。引数:メッセージ
import android.os.Message;→obtainMessage()の型


import android.view.KeyEvent;→キーコードID
import android.view.View;
void invalidate()→ビューの再描画
void setFocusable(boolean focasable)→フォーカスの指定。引数:有効(true)無効(false)
void setFocusableInTouchMode(boolean focasable)→タッチモード時のフォーカス指定。引数:有効(true)無効(false)
boolean onKeyDown(int keyCode,KeyEvent event)→キーダウンイベントの発生時に呼ばれる。引数:キーコード,キーイベント
boolean onKeyUp(int KeyCode,KeyEvent event)→キーアップイベント時に呼ばれる。引数:キーコード,キーイベント

**************************************************

onResume()メソッドで定期処理ハンドラの開始
onPause()メソッドで定期処理ハンドラの停止を行っています。

Androidでは任意の時間に何か処理を行いたいとき→Handlerクラスを使用

キーコードはKeyEventクラスの「KEYCODE_」から始まる定数で定義されています。

if文「 if(~){…} 」は「もし~なら…」ということです。
詳しくは、また今度。

おしまい。