質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

0回答

1593閲覧

Androidで、歩数データを取得したい

ingen

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2020/11/17 06:00

編集2020/11/17 06:06

前提・実現したいこと

Androidで、Javaまたはkotlinで歩数データを取得したいですが、Android10以上だと権限の取得が必要なようです。権限を許可・拒否して歩数センサーの情報を取得したいです。
いろいろサイトを見てみましたが、情報が古いようで、歩数データの権限(ACTIVITY_RECOGNITION)についてあまり詳しく乗っているサイトが見つけられませんでした。

該当のソースコード

MainActivity.java

Java

1package com.example.pedometerjava; 2 3import android.Manifest; 4import android.app.Activity; 5import android.hardware.Sensor; 6import android.hardware.SensorEvent; 7import android.hardware.SensorEventListener; 8import android.hardware.SensorManager; 9import android.os.Build; 10import android.os.Bundle; 11import android.util.Log; 12import android.view.Menu; 13import android.view.MenuItem; 14import android.widget.TextView; 15 16import androidx.core.app.ActivityCompat; 17 18import org.w3c.dom.Text; 19 20 21 22 23public class MainActivity extends Activity implements SensorEventListener{ 24 25 private SensorManager manager; 26 private Sensor delectorSensor; 27 private Sensor stepCntSensor; 28 private int stepcount = 0; 29 private int stepcount2 = 0; 30 31 private TextView textview; 32 private TextView textview2; 33 private final int REQUEST_CODE = 1000; 34 35 @Override 36 protected void onCreate(Bundle savedInstanceState) { 37 super.onCreate(savedInstanceState); 38 setContentView(R.layout.activity_main); 39 40 Log.d("ひらいた","ひらいてるところ"); 41 //SDKが29以上で確認する!!はず!! 42 if(Build.VERSION.SDK_INT >= 29) { 43 String[] permissions = { 44 Manifest.permission.ACTIVITY_RECOGNITION 45 }; 46 checkPermission(permissions, REQUEST_CODE); 47 } 48 49 //センサーマネージャを取得 50 manager = (SensorManager) getSystemService(SENSOR_SERVICE); 51 52 //センサマネージャから TYPE_STEP_DETECTOR についての情報を取得する 53 delectorSensor = manager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR); 54 55 //センサマネージャから TYPE_STEP_COUNTER についての情報を取得する 56 stepCntSensor = manager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER); 57 58 textview = (TextView)findViewById(R.id.textView); 59 textview2 = (TextView)findViewById(R.id.textView2); 60 61// textview.setText("STEP_DETECTOR="); 62// textview2.setText("STEP_COUNTER="); 63 64 } 65 66 public void checkPermission(String[] permissions, int request_code) { 67 ActivityCompat.requestPermissions(this, permissions, request_code); 68 } 69 70 71 @Override 72 public boolean onOptionsItemSelected(MenuItem item) { 73 // Handle action bar item clicks here. The action bar will 74 // automatically handle clicks on the Home/Up button, so long 75 // as you specify a parent activity in AndroidManifest.xml. 76 int id = item.getItemId(); 77 return super.onOptionsItemSelected(item); 78 } 79 80 @Override 81 public void onAccuracyChanged(Sensor sensor, int accuracy) { 82 // accuracy に変更があった時の処理 83 } 84 85 //センサーからの情報 86 @Override 87 public void onSensorChanged(SensorEvent event) { 88 89 Sensor sensor = event.sensor; 90 float[] values = event.values; 91 long timestamp = event.timestamp; 92 //TYPE_STEP_COUNTER 93 if(sensor.getType() == Sensor.TYPE_STEP_COUNTER){ 94 // 今までの歩数 95 Log.d("今までの歩数", String.valueOf(values[0])); 96 stepcount2++; 97 textview2.setText("STEP_COUNTER=" + stepcount2 + "歩"); 98 } 99 if(sensor.getType() == Sensor.TYPE_STEP_DETECTOR){ 100 // ステップを検知した場合にアクセス 101 Log.d("ステップを検知", String.valueOf(values[0])); 102 stepcount++; 103 textview.setText("STEP_DETECTOR=" + stepcount + "歩"); 104 105 } 106 } 107 108 @Override 109 protected void onResume() { 110 super.onResume(); 111 112 // リスナー設定 113 manager.registerListener (this, 114 stepCntSensor, 115 SensorManager.SENSOR_DELAY_NORMAL); 116 117 manager.registerListener(this, 118 delectorSensor, 119 SensorManager.SENSOR_DELAY_NORMAL); 120 } 121 122 @Override 123 protected void onPause() { 124 super.onPause(); 125 126 // リスナー解除 127 manager.unregisterListener(this,stepCntSensor); 128 manager.unregisterListener(this,delectorSensor); 129 } 130}

↓manifestに追加

<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />

デザイナーにはTextViewが2つ並んでいるのみです。

エラー?

D/SensorManager: registerListener fail (1) :: 1, step_counter Non-wakeup, 200000, 0,
D/SensorManager: registerListener fail (1) :: 13, step_detector Non-wakeup, 200000, 0,

補足情報(FW/ツールのバージョンなど)

実機はGalaxyS9を使用しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問