Presentation is loading. Please wait.

Presentation is loading. Please wait.

로봇 모니터링 1/2 UNIT 20 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 Message Queue Handler 2.

Similar presentations


Presentation on theme: "로봇 모니터링 1/2 UNIT 20 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 Message Queue Handler 2."— Presentation transcript:

1 로봇 모니터링 1/2 UNIT 20 로봇 SW 콘텐츠 교육원 조용수

2 학습 목표 Message Queue Handler 2

3 핸들러 메시지 큐 3 큐 메시지 핸들러 루퍼

4 Message public int what public int arg1 public int arg2 public Object obj 4

5 Handler –Message obtainMessage() –Message obtainMessage(int what) –Message obtainMessage(int what, Object obj) –Message obtainMessage(int what, int arg1, int arg2) –Message obtainMessage(int what, int arg1, int arg2, Object obj) Message –static Message obtain(Handler h) –static Message obtain(Handler h, int what) –static Message obtain(Handler h, int what, Object obj) –static Message obtain(Handler h, int what, int arg1, int arg2) –static Message objtain(Handler h, int what, int arg1, int arg2, Object obj) 5

6 Message 6 Message msg = handler.obtainMessage(); msg.what = 0; msg.arg1 = 1; handler.sendMessage(msg); Message msg = handler.obtainMessage(0); msg.arg1 = 1; handler.sendMessage(msg); Message msg = handler.obtainMessage(0, 1, 0); handler.sendMessage(msg); Message msg = Message.obtain(handler, 0, 1, 0); handler.sendMessage(msg); Message msg = Message.obtain(handler, 0, 1, 0); msg.sendToTarget();

7 핸들러 7 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/show" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/show" /> <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" />

8 핸들러 8 public class MainActivity extends Activity { private Button showButton; private TextView textView; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch(msg.what) { case 0: textView.setText("received: " + msg.arg1); break; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showButton = (Button)findViewById(R.id.show); textView = (TextView)findViewById(R.id.text); showButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Message msg = handler.obtainMessage(); msg.what = 0; msg.arg1 = 1; handler.sendMessage(msg); } }); }

9 핸들러 9 public class MainActivity extends Activity { private Button showButton; private TextView textView; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch(msg.what) { case 0: textView.setText("received: " + msg.arg1); break; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showButton = (Button)findViewById(R.id.show); textView = (TextView)findViewById(R.id.text); showButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Message msg = handler.obtainMessage(0); msg.arg1 = 1; handler.sendMessage(msg); } }); }

10 핸들러 10 public class MainActivity extends Activity { private Button showButton; private TextView textView; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch(msg.what) { case 0: textView.setText("received: " + msg.arg1); break; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showButton = (Button)findViewById(R.id.show); textView = (TextView)findViewById(R.id.text); showButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Message msg = handler.obtainMessage(0, 1, 0); handler.sendMessage(msg); } }); }

11 핸들러 11 public class MainActivity extends Activity { private Button showButton; private TextView textView; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch(msg.what) { case 0: textView.setText("received: " + msg.arg1); break; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showButton = (Button)findViewById(R.id.show); textView = (TextView)findViewById(R.id.text); showButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Message.obtain(handler, 0, 1, 0).sendToTarget(); } }); }

12 핸들러 12 public class MainActivity extends Activity { private Button showButton; private TextView textView; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch(msg.what) { case 0: textView.setText("received: " + msg.obj); break; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showButton = (Button)findViewById(R.id.show); textView = (TextView)findViewById(R.id.text); showButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { handler.obtainMessage(0, "test").sendToTarget(); } }); }

13 로봇 모니터링 13 public class MainActivity extends RobotActivity { private TextView leftProximityTextView; private TextView rightProximityTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); leftProximityTextView = (TextView)findViewById(R.id.leftProximity); rightProximityTextView = (TextView)findViewById(R.id.rightProximity); } @Override public void onDeviceDataChanged(Device device, Object values, long timestamp) { int[] data; switch(device.getId()) { case Albert.SENSOR_LEFT_PROXIMITY: { data = (int[])values; leftProximityTextView.setText("Left Proximity: " + data[0]); } break; case Albert.SENSOR_RIGHT_PROXIMITY: { data = (int[])values; rightProximityTextView.setText("Right Proximity: " + data[0]); } break; }

14 로봇 모니터링 14 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.05-30 02:15:30.216: E/JavaBinder(24444): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4924)05-30 02:15:30.216:

15 로봇 모니터링 15 public class MainActivity extends RobotActivity { private TextView leftProximityTextView; private TextView rightProximityTextView; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { int[] values; switch(msg.what) { case Albert.SENSOR_LEFT_PROXIMITY: { values = (int[])msg.obj; leftProximityTextView.setText("Left Proximity: " + values[0] + "," + values[1] + "," + values[2] + "," + values[3]); } break; case Albert.SENSOR_RIGHT_PROXIMITY: { values = (int[])msg.obj; rightProximityTextView.setText("Right Proximity: " + values[0] + "," + values[1] + "," + values[2] + "," + values[3]); } break; } };

16 로봇 모니터링 16 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); leftProximityTextView = (TextView)findViewById(R.id.leftProximity); rightProximityTextView = (TextView)findViewById(R.id.rightProximity); } @Override public void onDeviceDataChanged(Device device, Object values, long timestamp) { handler.obtainMessage(device.getId(), values).sendToTarget(); }

17 로봇 모니터링 17 @Override public void onDeviceDataChanged(final Device device, final Object values, long timestamp) { runOnUiThread(new Runnable() { @Override public void run() { int[] data; switch(device.getId()) { case Albert.SENSOR_LEFT_PROXIMITY: { data = (int[])values; leftProximityTextView.setText("Left Proximity: " + data[0]); } break; case Albert.SENSOR_RIGHT_PROXIMITY: { data = (int[])values; rightProximityTextView.setText("Right Proximity: " + data[0]); } break; } }); }

18 과제 모든 센서 출력하기 http://www.smartrobot.org/ko/reference/kr/robomati on/physical/Albert.php 18


Download ppt "로봇 모니터링 1/2 UNIT 20 로봇 SW 콘텐츠 교육원 조용수. 학습 목표 Message Queue Handler 2."

Similar presentations


Ads by Google