PortableAndroidDeveloerEnviroment? 以下は「あま~いアプリ開発」で行った内容です http://kokucheese.com/event/index/22126/ レシピ1 †
レシピ2 †
レシピ3 †
レシピ04 国際化 †res-values-strings.xmlをディレクトリごとコピー valuesとvalues-jaとの二つにする。 values-ja/strings.xmlを日本語に書き換える レシピ05 タイマー †Toast行を以下に入れ替え new Thread() { @Override public void run() { try{ Thread.sleep(10 * 1000); } catch (InterruptedException e){ e.printStackTrace(); } handler.post(new Runnable(){ public void run() { Toast.makeText(HelloWorldActivity.this,"Hello!", Toast.LENGTH_LONG).show(); } }); }}.start(); ハンドラを作っておく public class HelloPADE2Activity extends Activity { の下に一行追加 private Handler handler = new Handler(); Ctl+Shift+Oでimportを増やしておく レシピ06:ログ出力 †スィーツ07:明示的Intent †public class HelloPADEActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button)findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { // new Thread() { // @Override // public void run() { // Log.v("hello", "Error"); // try { // new NumberFormatException(); // Thread.sleep(10 * 1000); // } catch (InterruptedException e) { // e.printStackTrace(); // } // handler.post(new Rnnable() { // public void run() { // Toast.makeText(HelloWorldActivity.this, // "Hello!", Toast.LENGTH_LOGNG).show(); // } // }); // } // }.start(); EditText text = (EditText) findViewById(R.id.editText1); String value = text.getText().toString(); Intent intent = new Intent(HelloWorldActivity.this, SecondActivity.class); intent.putExtra("text",value); startActivityForResult(intent, 0); } }); } @Override protected void on ActibityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 0 && resultCode ==1) { String value = data.getExtras().getString("result"); Toast.makeText(this, value, Toast.LENGTH_LONG).show(); } } } セカンドアクティビティ †package jp.cane.android.sweet; import android.app.Activityl import android.content.Intent; import android.os.Bundle; public class SecondActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); Intent intent = getIntent(); String value = intent.getExtras().getString("text"); // Toast.makeText(this,value,Toast.LENGTH_LONG.show(); value = "こんにちは、" + value; Intent data = new Intent(); data.putExtra("result",value); setResult(1); finish(); } } スィーツ08:暗黙的Intent †package jp.cane.android.sweet; import android.app.Activityl import android.content.Intent; import android.os.Bundle; public class SecondActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); Intent intent = getIntent(); String value = intent.getExtras().getString("text"); // Toast.makeText(this,value,Toast.LENGTH_LONG.show(); value = "こんにちは、" + value; Intent data = new Intent(); data.putExtra("result",value); setResult(1); finish(); } } スィーツ09:返り値をIntentで受け取る †スィーツ10:サービス †New-classで、MainService?.java できたらextendedのサービスを追加 を以下のように作る package jp.cone.android.sweet;{ import android.app.Service; import android.content.Intent; import android.os.IBinder; public class MainService extends Service { @Override public void onCreate() super.onCreate(); } @Override public IBinder onBind(Intent intent) { return null; } } その次に、以下のように拡張する public class MainService extends Service implements Runnable { private Handler handler = new Handler(); @Override public void onCreate() super.onCreate(); new Thread(this).start(); } @Override public IBinder onBind(Intent intent) { return null; } public void run() { while (true) { try { Thread.sleep(3 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } handler.post(new Runnable() { public void run() { Toast.makeText(MainService.this, "Hello", Toast.LENGTH_LONG).show(); } }); } } } このサービスは問題があって、AndroidOSから勝手にkillされる。それを防ぐためにはstartforgroundとかをやると終了されなくなる。 お口直し:Bluetooth通信 †MainService?.javaを書き換え public void run() { handler.post(new Runnable() { public void run() { adapter = BluetoothAdapter.getDefaultAdapter(); } }); while (adapter == null) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } while (true) // try { // Tread.sleep(3 * 1000); // } catch (InterruptedException e) { // e.printStackTrace(); // } // handler.post(new Runnable() { // public void run() { // Toast.makeText(MainService.this, "Hello", Toast.LENGTH_LONG).show(); // } // }); try { BluetoothSocket socket; if (true) { // server BluetoothServerSocket ssocket = adapter .listenUsingRfcommWithServiceRecord("BTChat", UUID.fromString(UI_MODE_SERVICE)); socket = ssocket.accept(); } else { // client socket = adapter.getRemoteDevice("00:11:22:33:44:55") .createRfcommSockeToServiceRecord( UUID.fromString(UI_MODE_SERVICE)); socket.connect(); } // if server , move below one line to "point B". socket.getOutputStream().write("hogehoge\n".getBytes()); InputStream is = socket.getInputStream(); BufferedReader reader = new BufferdReader( new InputStreamReader(is)); final String line = reader.readLine(); handler.post(new Runnable() { public void run() { Toast.makeText(MainService.this, line, Toast.LENGTH_LONG).show(); } }); // point B } catch (IOException e) { // TODO Auto-genereted catch block e.printStackTrace } パーミッションを追加する必要がある res-AndroidManifest?.xmlのAndroid Manifest Permissionsでon.BLUETOOTH on.BLUETOOTH_ADMIN アクティビティを追加する度に |