2012年4月29日日曜日

Record Web Start Time

I try Date Class. I create app of "record web start time" to check Date Class.
The app have the time of pushing "Web Start" button.

I get now time.
SimpleDateFormat  sdf = new SimpleDateFormat("yyyy' /'MM'/'dd'/ 'HH':'mm':'ss':'");  
Date  date = new Date();  
I get previous time of pushing "Web Start" button. I use SharedPreferences Class.
SharedPreferences pref = getSharedPreferences("pref", MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE);
String votetime = pref.getString("votetime", sdf.format(date));
I preview previous time.
TextView prevvotetime = (TextView)findViewById(R.id.text1);
prevvotetime.setText(votetime);
If pushing "Web Start" button, I update time.
set listener.
Button votebutton = (Button)findViewById(R.id.button1);
votebutton.setOnClickListener(new View.OnClickListener() {

 @Override
 public void onClick(View v) {
 }
});
I update time and save time to SharedPreferences .
SimpleDateFormat  sdf = new SimpleDateFormat("yyyy' /'MM'/'dd'/ 'HH':'mm':'ss':'");  
Date  date = new Date(); 

SharedPreferences pref = getSharedPreferences("pref", MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE);
Editor e = pref.edit();
e.putString("votetime", sdf.format(date));
e.commit();
source code is here.
apk is here.
Please suggest your android issue by twitter or mail, I would try to clear up your issue.

2012年4月22日日曜日

Web Browser

I try WebView class.

donwload apk.



set setWebViewClient for no intent WEB BROWSER.
WebView w = (WebView)findViewById(R.id.webView1);
w.setWebViewClient(new WebViewClient());
enable javascript.
w.getSettings().setJavaScriptEnabled(true);
add Zoom Control
w.getSettings().setBuiltInZoomControls(true);
If app finish to load web page, call callback. I register callback.
w.setWebViewClient(new webclient());
and callback function by WebViewClient. If call onPageFinish, app update url text and app focus web page.
public class webclient extends WebViewClient {
    @Override
    public void onPageFinished(WebView view, String url) {
        setProgressBarIndeterminateVisibility(false);
        WebView w = (WebView)findViewById(R.id.webView1);
  TextView t = (TextView)findViewById(R.id.editText1);
  String u = w.getUrl();
  t.setText(u);
  w.requestFocus();
    }
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        setProgressBarIndeterminateVisibility(true);
    } 
}
If user push W button, app hide ime.
Button b = (Button)findViewById(R.id.button1);
b.setOnClickListener( new View.OnClickListener() {
 @Override
 public void onClick(View v) {
        EditText e = (EditText)findViewById(R.id.editText1);
        if (e.isFocused()) {
         WebView w = (WebView)findViewById(R.id.webView1);
  mI.hideSoftInputFromWindow(w.getWindowToken(), 0);
If user push W button, app jump url inputted by user.
If input text is not ".", app think text is search word.
If input text is not "http://", app add "http://" to url.
TextView t = (TextView)findViewById(R.id.editText1);
if (!t.getText().toString().matches(".")){
 w.loadUrl("http://www.google.co.jp/search?q=" + t.getText().toString());
} else if (!t.getText().toString().startsWith("http://")) {
 w.loadUrl("http://" + t.getText().toString());
} else {
 w.loadUrl(t.getText().toString());
}
If user input url text, app foucs text all.
EditText e = (EditText)findViewById(R.id.editText1);
e.setOnFocusChangeListener(new View.OnFocusChangeListener() {
 
 @Override
 public void onFocusChange(View v, boolean hasFocus) {
  if (hasFocus == true) {
         EditText e = (EditText)findViewById(R.id.editText1);
   e.selectAll();
  }
 }
});
If user push back button, app go back's web page.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
 if (keyCode == KeyEvent.KEYCODE_BACK) {
        WebView w = (WebView)findViewById(R.id.webView1);
        w.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
source code is here. Please suggest your android issue by twitter or mail, I would try to clear up your issue.

2012年4月20日金曜日

analysis mp4 file

I did mediaRecorder and ParcelFileDescriptor class. and I analysis transfered file.

it is the blog.

I found description for ISO 14496-12 "ISO base media file format".
but analysis is difficult.

it is result.
xls file

2012年4月17日火曜日

ScaleImage

I did to scale Image on there.
But it is not scale on center, it is to scale on position( 0, 0).

I try to scale on center.

default position is (0. 0).
first, position move center at image
float mx = canvas.getWidth();
float my = canvas.getHeight();
canvas.translate(mx/2, my/2);
second, scale it.
canvas.scale(mScaleFactor, mScaleFactor);
final, take back.
canvas.translate(-(mx/2), -(my/2));
it is cool. source code is here. Please suggest your android issue by twitter or mail, I would try to clear up your issue.

2012年4月16日月曜日

move image


I try to move image in android.
I prepare the image.
int resid = context.getResources().getIdentifier("s066", "drawable", context.getPackageName());
mImage = context.getResources().getDrawable(resid);
mImage.setBounds(0, 0, mImage.getIntrinsicWidth(), mImage.getIntrinsicHeight() );
I prepare GestureDetector for getting onScroll event.
mGestureDetector = new GestureDetector(context, this);
I get touch event.
mGestureDetector.onTouchEvent(ev);
onScroll get moving position and call invalidate() for onDrow.
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
  float distanceY) {
 Log.d("book", "distanceX=" + distanceX + "  distanceY=" + distanceY);
 mTranslateX -= distanceX;
 mTranslateY -=distanceY;
 invalidate();
 
 return false;
}
onDrow.
@Override
public void onDraw(Canvas canvas) {
 super.onDraw(canvas);
 
 canvas.save();
 canvas.translate(mTranslateX, mTranslateY);
 mImage.draw(canvas);
 
 canvas.restore();
}
source code is here. Please suggest your android issue by twitter or mail, I would try to clear up your issue.

2012年4月15日日曜日

ScaleGestureDetector

I referred this site.

I create custom view.
public class ScaleGestureDetectorView extends View {
I prepare image for Drawable. I prepare s093 named jpeg image.
int resid = context.getResources().getIdentifier("s093", "drawable", context.getPackageName());
Drawable mImage;
mImage = context.getResources().getDrawable(resid);
mImage.setBounds(0, 0, width, height );
I prepare ScaleGestureDetector class.
mScaleGestureDetector = new ScaleGestureDetector(context, mSimpleListener);
call onDraw() by invalidate().
public void onDraw(Canvas canvas) {
 super.onDraw(canvas);
  
 canvas.save();
 canvas.scale(mScaleFactor, mScaleFactor);
 mImage.draw(canvas);
  
 canvas.restore();
input event to ScaleGestureDetector at onTouchEvent.
public boolean onTouchEvent(MotionEvent ev) {
    mScaleGestureDetector.onTouchEvent(ev);
    return true;
}
I prepare ScaleGestureDetector.SimpleOnScaleGestureListener
public void onScaleEnd(ScaleGestureDetector detector) {
 Log.d("ges", "onScaleEnd "+ detector.getScaleFactor());
 mScaleFactor *= detector.getScaleFactor();
 invalidate();
 super.onScaleEnd(detector);
}

source code is here. Please suggest your android issue by twitter or mail, I would try to clear up your issue.

2012年4月14日土曜日

OnGestureListener

If you try my sample, you need image and import image at res/drawable-hdpi .

I try onGestureListener interface.
I prepare GestureDetector.
mGestureDetector = new GestureDetector(this, this);
I input onTouchEvent parameter.
public boolean onTouchEvent(MotionEvent ev) {
 mGestureDetector.onTouchEvent(ev);
 return false;
}
I prepare onFling at onGestureListener.
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
If velocityY smaller than 0, next page.
if (velocityY < 0) {//right
 mPagenumber++;
If velocityY bigger than 0, prev page.
}else {//left
 mPagenumber--;
select image from Resource. I prepare image name "sxxx.jpg". xxx is number. exsapme s001.jpg, s002.jpg, s003.jpg....s020.jpg...
I set selected image to view.
Resources res = getResources();
int resid = res.getIdentifier(filename, "drawable", getPackageName());
ImageView img = (ImageView)findViewById(R.id.imageView1);
img.setImageResource(resid);
source code is here. Please suggest your android issue by twitter or mail, I would try to clear up your issue.

MediaRecoder ParcelFileDescriptor

I try to record camera image in other pc storage.
I use network for transfer data.

I refered this site.

I prepared ParcelFileDescriptor and socket.
ParcelFileDescriptor pfd = null;
Socket  socket = null;
I set for network setting.
192.168.1.2 is my pc ip address.
String hostname = "192.168.1.2";
int port = 5000;
I try to create socket
try {
 socket = new Socket(InetAddress.getByName(hostname), port);
 pfd = ParcelFileDescriptor.fromSocket(socket);
 
} catch (UnknownHostException e1) {
 // TODO Auto-generated catch block
 e1.printStackTrace();
} catch (IOException e1) {
 // TODO Auto-generated catch block
 e1.printStackTrace();
}
I try to set ParcelFileDescriptor to MediaRecorder.
_mediarecorder = new MediaRecorder();
_mediarecorder.setOutputFile(pfd.getFileDescriptor());
Android source code is here.
Next Server side program. this program do in my pc(192.168.1.2).
and this is java language.
I create server socket. port number need to be same between client and server.
ServerSocket svsock = new ServerSocket(5000);
I prepare file.
outFile = new FileWriter("xyz" + i + ".mp4");
I wait client(Android) connecting by acccept.
Socket sock = svsock.accept();
If client(Android) connected, I use accept socket sock.
sock.getInputStream()
I prepare BufferedReader and BufferedWriter, and I write received data to the file.
BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
BufferedWriter wt = new BufferedWriter(outFile);
while(sock.isConnected()) {
 int line = in.read();
 if (line == -1) {
  break;
 }
 wt.write(line);
}
If client(Android) connecting finished, I close.
outFile.close();
sock.close();
server sid source code is here.
IMPORTANT, First server side do, Next Client(Android) do.

server side recive file analysis.

Please suggest your android issue by twitter or mail, I would try to clear up your issue.

client Socket

I send data by socket.
I get socket.
Socket sk = null;
sk = new Socket(addr, 5000);
I prepare BufferedWriter for getOutputStream().
BufferedWriter wBuffer = null;
wBuffer = new BufferedWriter(new OutputStreamWriter(sk.getOutputStream()));
data write and flush and close for sending.
wBuffer.write("testtesttest");
Log.d("socket", "write");
wBuffer.flush();
Log.d("socket", "flush");
wBuffer.close();
I got message "testtesttest" at server side.
source code is here.
Please suggest your android issue by twitter or mail, I would try to clear up your issue.

Call

I try intent for call the number.
I prepare button for call. and prepare listener.
I intent ACTION_CALL.
Button b= (Button)findViewById(id.button1);
b.setOnClickListener(new View.OnClickListener() {
 
 @Override
 public void onClick(View v) {
        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:117"));
        startActivity(intent);
 }
});

If you pushed button, phone call 117. 117 is "you get time in japan".
source code is here. Please suggest your android issue by twitter or mail, I would try to clear up your issue.