« 2012年1月 | トップページ | 2012年3月 »

2012年2月

2012年2月23日 (木)

androidソフトカーソルキーをつくった!

Device20120223140832 自分の初めてのandroid機HT-03Aには便利なトラックボールがあった。
最近のスマートフォンはタッチ専用になってフリックの苦手な自分にはカーソルを移動に苦労する。

それでソフトカーソルキー(十字キー・方向キー)なるものをつくってみた。

1.カーソルキー

// cx;中心x座標,cy;中心y;座標,cr;半径,cw;キー幅
void cursorKey(float cx,float cy,float cr,float cw){
    paint.setColor(Color.argb(127, 200, 200, 200));
    paint.setStyle(Paint.Style.FILL);
    canvas.drawCircle(cx,cy,cr+1,paint);
    paint.setColor(Color.argb(127, 255, 255, 255));
    Arrow(cx,cy-cr,cx+cw/2,cy-cr+cw,cx-cw/2,cy-cr+cw);    //up
    Arrow(cx,cy+cr,cx+cw/2,cy+cr-cw,cx-cw/2,cy+cr-cw);    //down
    Arrow(cx-cr,cy,cx-cr+cw,cy-cw/2,cx-cr+cw,cy+cw/2);    //left
    Arrow(cx+cr,cy,cx+cr-cw,cy-cw/2,cx+cr-cw,cy+cw/2);    //right
    canvas.drawCircle(cx,cy,cw/2,paint);
}
//三角矢印三点(x1,y1),(x2,y2),(x3,y3)
void Arrow(float x1,float y1,float x2,float y2,float x3,float y3){
   Path path=new Path();
   path.moveTo(x1, y1);
   path.lineTo(x2, y2);
   path.lineTo(x3, y3);
   canvas.drawPath(path, paint);
}

 

2.呼び出しとタッチイベントの処理

void gMain(){
//十字キー表示・非表示
if(cursorsw==1)cursorKey(cx,cy,cr,cw);
}
//タッチイベント
@Override
public boolean onTouchEvent(MotionEvent event) {
    int touchAction=event.getAction();
    if (touchAction==MotionEvent.ACTION_DOWN) {
        touchDown=true;
        touchX=(int)(event.getX());
        touchY=(int)(event.getY());
    }
       canvas=holder.lockCanvas();
       onTick(canvas);
       holder.unlockCanvasAndPost(canvas);
    return true;
}
//キャンバス
    private void onTick(Canvas canvas) {
    if(touchDown){
    touchDown=false;
            if(cursorsw==1)MenuPlus();
    }
void MenuPlus(){
if((touchX>cx+cw/2&&touchX<cx+cr)&&(touchY>cy-cw/2&&touchY<cy+cw/2)){
(RIGHT処理)
return;
}
if((touchX>cx-cr&&touchX<cx-cw/2)&&(touchY>cy-cw/2&&touchY<cy+cw/2)){
(LEFT処理)
return;
}
if((touchX>cx-cw/2&&touchX<cx+cw/2)&&(touchY>cy+cw/2&&touchY<cy+cr)){
(DOWN処理)
return;
}
if((touchX>cx-cw/2&&touchX<cx+cw/2)&&(touchY>cy-cr&&touchY<cy-cw/2)){
(UP処理)
return;
}
if((touchX>cx-cw/2&&touchX<cx+cw/2)&&(touchY>cy-cw/2&&touchY<cy+cw/2)){
(決定処理)
return;
}
    }

| | コメント (2) | トラックバック (0)

2012年2月14日 (火)

android LatTime にGPXファイルインポート機能開発中!

2012katsuta人気がない自作のandroid版LatTimeではあるが自分には有効なので使っている。
今回、android RunKeeperを使うようになったのでこれの出力ファイルをインポートすることを試みた。
出力ファイルGPXはRunKeeperのAdvanced Optionsをクリックして表示されるGPXをクリックすれば入手可能だ!

もうひとつ、RunKeeper用L-04Cのバッテリーが3時間程度で切れて長時間ランには向かない。
それでロングランにはSony GPS-CS3Kを使う。
これの出力logファイルをGPSBabelにて変換(NMEA 0183 sentences → GPX XML)するとGPXファイルが得られる。

このGPXファイルをインポートする機能を追加する。
GPXファイルを選択するルーチンと緯度・経度から距離を計算するルーチンは下記を使わせて貰った。

Androidでファイル選択ダイアログを使う

経度緯度から2点間の距離と方角(方向・方位)を求める

| | コメント (0) | トラックバック (0)

« 2012年1月 | トップページ | 2012年3月 »