Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
近接センサータイマー
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.rinevo.texttest.MainActivity">
<ScrollView
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="" />
</ScrollView>
</RelativeLayout>
package com.rinevo.texttest;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.ScrollView;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends AppCompatActivity implements SensorEventListener {
private TextView mTextView;
private ScrollView mScrollView;
private SensorManager mSensorManager;
private long mBackTime = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 表示を縦固定にする
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// スリープしないようする
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// 操作するViewをリソースから取得
mTextView = (TextView)findViewById(R.id.textView);
mScrollView = (ScrollView)findViewById(R.id.scrollView);
// センサーを取得
mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
// イベントリスナーにセンサーを登録
Sensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
mSensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_FASTEST);
}
@Override
protected void onPause() {
super.onPause();
// イベントリスナーからセンサーを解除
mSensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
// 近接センサーのとき
if (sensorEvent.sensor.getType() == Sensor.TYPE_PROXIMITY) {
// 現在の日時をミリ秒単位で取得
long currentTimeMillis = System.currentTimeMillis();
Date date = new Date(currentTimeMillis);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
// 前回との時間差を求める
if (mBackTime == 0) {
mBackTime = currentTimeMillis;
}
double diffTime = ((double) currentTimeMillis - (double) mBackTime) / 1000.0;
mBackTime = currentTimeMillis;
// 日時と差分の文字列
String sTime = simpleDateFormat.format(date) + " +" + String.valueOf(diffTime);
// 出力
if (sensorEvent.values[0] == sensorEvent.sensor.getMaximumRange()) {
mTextView.append("D: " + sTime + "\n");
} else {
mTextView.append("N: " + sTime + "\n");
}
// スクロールを末尾に移動
mScrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment