{"id":244,"date":"2018-10-02T18:22:35","date_gmt":"2018-10-02T09:22:35","guid":{"rendered":"https:\/\/www.dogrow.net\/android\/?p=244"},"modified":"2018-10-02T21:21:40","modified_gmt":"2018-10-02T12:21:40","slug":"blog15","status":"publish","type":"post","link":"https:\/\/www.dogrow.net\/android\/blog15\/","title":{"rendered":"(15) \u52a0\u901f\u5ea6\u30bb\u30f3\u30b5\u30fc\u3092\u4f7f\u3063\u3066\u307f\u308b\u3002"},"content":{"rendered":"<h1 class=\"my_h\">1. \u3084\u308a\u305f\u3044\u3053\u3068<\/h1>\n<p><a href=\"https:\/\/www.dogrow.net\/android\/blog14\/\" target=\"_blank\">(14) \u5b9f\u6a5f\u306e\u30bb\u30f3\u30b5\u30fc\u306e\u5b9f\u88c5\u6709\u7121\u3092\u78ba\u8a8d\u3059\u308b\u3002<\/a> \u3067\u306f\u6240\u6709\u3057\u3066\u3044\u308b\u5b9f\u6a5f\u306b\u52a0\u901f\u5ea6\u30bb\u30f3\u30b5\u30fc\u304c\u4ed8\u3044\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u305f\u3002<\/p>\n<p>\u4eca\u56de\u306f\u5b9f\u969b\u306b\u52a0\u901f\u5ea6\u30bb\u30f3\u30b5\u30fc\u3092\u4f7f\u3063\u3066\u307f\u305f\u3044\u3002<\/p>\n<p>\u3068\u306f\u8a00\u3063\u3066\u3082\u3001\u3044\u304d\u306a\u308a\u30dc\u30fc\u30eb\u3092\u8ee2\u304c\u3059\u306e\u306f\u30cf\u30fc\u30c9\u30eb\u304c\u9ad8\u3044\u3002<\/p>\n<p>\u307e\u305a\u306f&#8230;<br \/>\n<span class=\"my_fc_deeppink my_fs_big2\">\u5b9f\u6a5f\u3092\u50be\u3051\u305f\u3068\u304d\u306e\u30bb\u30f3\u30b5\u30fc\u306e\u51fa\u529b\u5024\u3092\u8868\u793a\u3057\u3066\u307f\u308b\u3002<\/span><\/p>\n<h1 class=\"my_h\">2. \u3084\u3063\u3066\u307f\u308b\uff01<\/h1>\n<h2 class=\"my_h\">(1) \u52a0\u901f\u5ea6\u30bb\u30f3\u30b5\u30fc\u306e\u4ed5\u69d8<\/h2>\n<p>\u52a0\u901f\u5ea6\u30bb\u30f3\u30b5\u30fc\u306f\u3001\u5b9f\u6a5f\u3092\u50be\u3051\u305f\u3068\u304d\u306e X, Y, Z\u8ef8\u65b9\u5411\u306e\u52a0\u901f\u5ea6\u3092\u8a08\u6e2c\u30fb\u51fa\u529b\u3057\u3066\u304f\u308c\u308b\u3002<\/p>\n<p>\u3088\u3063\u3066&#8230;<br \/>\n\u4eca\u56de\u4f5c\u308b\u30a2\u30d7\u30ea\u3067\u306f\u3001\u5404\u8ef8\u306e\u52a0\u901f\u5ea6 3\u5024\u3092\u8868\u793a\u3059\u308b\u3002<\/p>\n<h2 class=\"my_h\">(2) \u753b\u9762\u30ec\u30a4\u30a2\u30a6\u30c8<\/h2>\n<p>\u3053\u3093\u306a\u611f\u3058\u3002<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.dogrow.net\/android\/wp-content\/uploads\/2018\/10\/001-2.png\" alt=\"\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/www.dogrow.net\/android\/wp-content\/uploads\/2018\/10\/002-1.png\" alt=\"\" \/><\/p>\n<h2 class=\"my_h\">(3) \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0<\/h2>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport android.hardware.Sensor;\r\nimport android.hardware.SensorEvent;\r\nimport android.hardware.SensorEventListener;\r\nimport android.hardware.SensorManager;\r\nimport android.support.v7.app.AppCompatActivity;\r\nimport android.os.Bundle;\r\nimport android.widget.TextView;\r\n\r\npublic class MainActivity extends AppCompatActivity implements SensorEventListener {\r\n    private SensorManager m_sensorManager;\r\n    private TextView m_val_x_TextView;\r\n    private TextView m_val_y_TextView;\r\n    private TextView m_val_z_TextView;\r\n\r\n    @Override protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_main);\r\n\r\n        m_sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);\r\n        m_val_x_TextView = findViewById(R.id.val_x);\r\n        m_val_y_TextView = findViewById(R.id.val_y);\r\n        m_val_z_TextView = findViewById(R.id.val_z);\r\n    }\r\n\r\n    @Override protected void onResume() {\r\n        super.onResume();\r\n        \/\/ Event Listener\u767b\u9332\r\n        Sensor accel = m_sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);\r\n        m_sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_NORMAL);\r\n    }\r\n\r\n    @Override protected void onPause() {\r\n        super.onPause();\r\n        \/\/ Event Listener\u767b\u9332\u89e3\u9664\r\n        m_sensorManager.unregisterListener(this);\r\n    }\r\n\r\n    @Override public void onSensorChanged(SensorEvent event) {\r\n        if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){\r\n            m_val_x_TextView.setText(String.format(&quot;%.3f&quot;, event.values&#x5B;0]));\r\n            m_val_y_TextView.setText(String.format(&quot;%.3f&quot;, event.values&#x5B;1]));\r\n            m_val_z_TextView.setText(String.format(&quot;%.3f&quot;, event.values&#x5B;2]));\r\n        }\r\n    }\r\n\r\n    @Override public void onAccuracyChanged(Sensor sensor, int accuracy) {\r\n    }\r\n}\r\n<\/pre>\n<h2 class=\"my_h\">(4) \u5b9f\u884c\u7d50\u679c<\/h2>\n<h3 class=\"my_h\">1) X\u8ef8<\/h3>\n<p>\u30fb\u6c34\u5e73\u72b6\u614b\u304c\uff10<br \/>\n\u30fb\u5de6\u56de\u8ee2\uff08\u53cd\u6642\u8a08\u56de\u308a\uff09\u304c\u30d7\u30e9\u30b9\u65b9\u5411<br \/>\n\u30fb\u53f3\u56de\u8ee2\uff08\u6642\u8a08\u56de\u308a\uff09\u304c\u30de\u30a4\u30ca\u30b9\u65b9\u5411<\/p>\n<div class=\"disp_ib alignC\">\u5de6 90\u5ea6\u56de\u8ee2<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.dogrow.net\/android\/wp-content\/uploads\/2018\/10\/201.png\" alt=\"\" \/><\/div>\n<div class=\"disp_ib alignC\">\u53f3 90\u5ea6\u56de\u8ee2<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.dogrow.net\/android\/wp-content\/uploads\/2018\/10\/202.png\" alt=\"\" \/><\/div>\n<h3 class=\"my_h\">2) Y\u8ef8<\/h3>\n<p>\u30fb\u6c34\u5e73\u72b6\u614b\u304c\uff10<br \/>\n\u30fb\u624b\u524d\u306b\u5411\u304b\u3063\u3066\u56de\u8ee2\u304c\u30d7\u30e9\u30b9\u65b9\u5411<br \/>\n\u30fb\u5965\u306b\u5411\u304b\u3063\u3066\u56de\u8ee2\u304c\u30de\u30a4\u30ca\u30b9\u65b9\u5411<\/p>\n<div class=\"disp_ib alignC\">\u624b\u524d 90\u5ea6\u56de\u8ee2<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.dogrow.net\/android\/wp-content\/uploads\/2018\/10\/203.png\" alt=\"\" \/><\/div>\n<div class=\"disp_ib alignC\">\u5965 90\u5ea6\u56de\u8ee2<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.dogrow.net\/android\/wp-content\/uploads\/2018\/10\/204.png\" alt=\"\" \/><\/div>\n<h1 class=\"my_h\">3. \u5fdc\u7528<\/h1>\n<h2 class=\"my_h\">(1) \u554f\u984c\u70b9\uff06\u6539\u5584\u6848<\/h2>\n<p>\u4e0a\u8a18\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u306f <span class=\"my_fc_deeppink\">onSensorChanged<\/span> \u3067\u30a4\u30d9\u30f3\u30c8\u304c\u5165\u308b\u305f\u3073\u306b\u63cf\u753b\u3092\u66f4\u65b0\u3057\u3066\u3044\u305f\u3002<br \/>\n\u3053\u308c\u304c\u5b9f\u306b\u91cd\u305f\u3044\u3002<\/p>\n<p>\u3088\u3063\u3066&#8230;<br \/>\n<span class=\"my_fc_deeppink\">onSensorChanged<\/span> \u3067\u306f\u30bb\u30f3\u30b5\u30fc\u306e\u5024\u3092\u9000\u907f\u3059\u308b\u3060\u3051\u306b\u3059\u308b\u3002<br \/>\n\u9000\u907f\u3057\u305f\u5024\u306e\u63cf\u753b\u306f\u3001\u5468\u671f\u30cf\u30f3\u30c9\u30e9\u3092\u4f7f\u3063\u3066 200ms\u5468\u671f\u3067\u5b9f\u884c\u3059\u308b\u3002<\/p>\n<p>\u3053\u308c\u3067\u8efd\u304f\u306a\u308b\u306f\u305a\u3060\u3002<\/p>\n<h2 class=\"my_h\">(2) \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0<\/h2>\n<p>\u30fb200ms\u5468\u671f\u3067 X, Y, Z\u8868\u793a\u5024\u3092\u66f4\u65b0\u3059\u308b\u3088\u3046\u306b\u3057\u305f\u3002<br \/>\n\u30fbTextView::setText()\u306f\u7121\u52b9\u9818\u57df\u3092\u4f5c\u308b\u3088\u3046\u3067\u3001\u518d\u63cf\u753b\u306e\u305f\u3081\u306e View::invalid()\u30b3\u30fc\u30eb\u306f\u5fc5\u8981\u306a\u304b\u3063\u305f\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport android.hardware.Sensor;\r\nimport android.hardware.SensorEvent;\r\nimport android.hardware.SensorEventListener;\r\nimport android.hardware.SensorManager;\r\nimport android.os.Handler;\r\nimport android.support.v7.app.AppCompatActivity;\r\nimport android.os.Bundle;\r\nimport android.widget.TextView;\r\n\r\npublic class MainActivity extends AppCompatActivity implements SensorEventListener {\r\n    private SensorManager m_sensorManager;\r\n    private TextView m_val_x_TextView, m_val_y_TextView, m_val_z_TextView;\r\n    private float m_sensor_val_x, m_sensor_val_y, m_sensor_val_z;\r\n    private Runnable m_runnable;\r\n    private final Handler m_handler = new Handler();\r\n\r\n    @Override protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_main);\r\n\r\n        m_sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);\r\n        m_val_x_TextView = findViewById(R.id.val_x);\r\n        m_val_y_TextView = findViewById(R.id.val_y);\r\n        m_val_z_TextView = findViewById(R.id.val_z);\r\n        m_sensor_val_x = m_sensor_val_y = m_sensor_val_z = 0;\r\n        StartCyclicHandler();       \/\/ \u5468\u671f\u30cf\u30f3\u30c9\u30e9\u958b\u59cb\r\n    }\r\n\r\n    @Override protected void onResume() {\r\n        super.onResume();\r\n        \/\/ Event Listener\u767b\u9332\r\n        Sensor accel = m_sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);\r\n        m_sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_NORMAL);\r\n    }\r\n\r\n    @Override protected void onPause() {\r\n        super.onPause();\r\n        m_sensorManager.unregisterListener(this);   \/\/ Event Listener\u767b\u9332\u89e3\u9664\r\n        StoptCyclicHandler();       \/\/ \u5468\u671f\u30cf\u30f3\u30c9\u30e9\u505c\u6b62\r\n    }\r\n\r\n    @Override public void onSensorChanged(SensorEvent event) {\r\n        if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){\r\n            m_sensor_val_x = event.values&#x5B;0];\r\n            m_sensor_val_y = event.values&#x5B;1];\r\n            m_sensor_val_z = event.values&#x5B;2];\r\n        }\r\n    }\r\n\r\n    protected void StartCyclicHandler(){\r\n        m_runnable = new Runnable() {\r\n            @Override public void run() {\r\n                m_val_x_TextView.setText(String.format(&quot;%.3f&quot;, m_sensor_val_x));\r\n                m_val_y_TextView.setText(String.format(&quot;%.3f&quot;, m_sensor_val_y));\r\n                m_val_z_TextView.setText(String.format(&quot;%.3f&quot;, m_sensor_val_z));\r\n                m_handler.postDelayed(this, 200);    \/\/ 200ms\u30b9\u30ea\u30fc\u30d7\r\n            }\r\n        };\r\n        m_handler.post(m_runnable);     \/\/ \u30b9\u30ec\u30c3\u30c9\u8d77\u52d5\r\n    }\r\n    protected void StoptCyclicHandler() {\r\n        m_handler.removeCallbacks(m_runnable);\r\n    }\r\n\r\n    @Override public void onAccuracyChanged(Sensor sensor, int accuracy) {\r\n    }\r\n}\r\n<\/pre>\n<hr class=\"my_hr_bottom\">\n","protected":false},"excerpt":{"rendered":"<p>1. \u3084\u308a\u305f\u3044\u3053\u3068 (14) \u5b9f\u6a5f\u306e\u30bb\u30f3\u30b5\u30fc\u306e\u5b9f\u88c5\u6709\u7121\u3092\u78ba\u8a8d\u3059\u308b\u3002 \u3067\u306f\u6240\u6709\u3057\u3066\u3044\u308b\u5b9f\u6a5f\u306b\u52a0\u901f\u5ea6\u30bb\u30f3\u30b5\u30fc\u304c\u4ed8\u3044\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u305f\u3002 \u4eca\u56de\u306f\u5b9f\u969b\u306b\u52a0\u901f\u5ea6\u30bb\u30f3\u30b5\u30fc\u3092\u4f7f\u3063\u3066\u307f\u305f\u3044\u3002 \u3068\u306f\u8a00\u3063\u3066\u3082\u3001\u3044\u304d\u306a\u308a\u30dc\u30fc\u30eb\u3092\u8ee2\u304c\u3059\u306e\u306f\u30cf\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.dogrow.net\/android\/blog15\/\">\u7d9a\u304d\u3092\u8aad\u3080 &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,6],"tags":[],"class_list":["post-244","post","type-post","status-publish","format-standard","hentry","category-androidstudio","category-6"],"views":7303,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.dogrow.net\/android\/wp-json\/wp\/v2\/posts\/244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dogrow.net\/android\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dogrow.net\/android\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dogrow.net\/android\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dogrow.net\/android\/wp-json\/wp\/v2\/comments?post=244"}],"version-history":[{"count":17,"href":"https:\/\/www.dogrow.net\/android\/wp-json\/wp\/v2\/posts\/244\/revisions"}],"predecessor-version":[{"id":270,"href":"https:\/\/www.dogrow.net\/android\/wp-json\/wp\/v2\/posts\/244\/revisions\/270"}],"wp:attachment":[{"href":"https:\/\/www.dogrow.net\/android\/wp-json\/wp\/v2\/media?parent=244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dogrow.net\/android\/wp-json\/wp\/v2\/categories?post=244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dogrow.net\/android\/wp-json\/wp\/v2\/tags?post=244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}