Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何用加速度计制作骰子摇动器?_Android_Accelerometer_Android Sensors - Fatal编程技术网

Android 如何用加速度计制作骰子摇动器?

Android 如何用加速度计制作骰子摇动器?,android,accelerometer,android-sensors,Android,Accelerometer,Android Sensors,我想做一个安卓应用程序,可以用摇动手机来掷骰子。 我已经在android studio中设置了加速度传感器。 问题是,如何让应用程序带有一个随机数字骰子,摇动手机直到达到我之前设定的限制 这是MainActivity.java package com.example.pc.accelerometer; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import andr

我想做一个安卓应用程序,可以用摇动手机来掷骰子。 我已经在android studio中设置了加速度传感器。 问题是,如何让应用程序带有一个随机数字骰子,摇动手机直到达到我之前设定的限制

这是MainActivity.java

package com.example.pc.accelerometer;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.widget.TextView;

import java.util.Random;

public class MainActivity extends Activity implements SensorEventListener{

private TextView xText, yText, zText;
private Sensor mySensor;
private SensorManager SM;
int ab;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Create our Sensor Manager
    SM = (SensorManager)getSystemService(SENSOR_SERVICE);

    // Accelerometer Sensor
    mySensor = SM.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

    // Register sensor Listener
    SM.registerListener(this, mySensor, SensorManager.SENSOR_DELAY_NORMAL);

    // Assign TextView
    xText = (TextView)findViewById(R.id.xText);
    yText = (TextView)findViewById(R.id.yText);
    zText = (TextView)findViewById(R.id.zText);
//        yText.setText(ab);
}

@Override
protected void onResume() {
    super.onResume();
    SM.registerListener(this, mySensor, SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
    // Not in use
}

@Override
public void onSensorChanged(SensorEvent event) {
    if(event.values[0]>3){
        final int[] proper_noun = {1,2,3,4,5,6};
        Random random = new Random();
        int index = random.nextInt(proper_noun.length);
        ab = proper_noun[index];

        Intent i = new Intent(MainActivity.this, ShakeActivity.class);
        Bundle b = new Bundle();

        b.putInt("angka",ab);

        i.putExtras(b);

        startActivity(i);
        SM.unregisterListener(this);

    }
    xText.setText("X: " + event.values[0]);

//        yText.setText("Y: " + event.values[1]);
//        zText.setText("Z: " + event.values[2]);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
 }
}
package com.example.pc.accelerometer;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

/**
 * Created by PC-Parinussa on 6/26/2017.
 */

public class ShakeActivity extends Activity {
    TextView namaTv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.shake_layout);

        Bundle b = getIntent().getExtras();
        int angka = b.getInt("angka");
    namaTv = (TextView) findViewById(R.id.shakeID);

    namaTv.setText("Random angka : "+angka);
}
}
这是ShakeActivity.java

package com.example.pc.accelerometer;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.widget.TextView;

import java.util.Random;

public class MainActivity extends Activity implements SensorEventListener{

private TextView xText, yText, zText;
private Sensor mySensor;
private SensorManager SM;
int ab;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Create our Sensor Manager
    SM = (SensorManager)getSystemService(SENSOR_SERVICE);

    // Accelerometer Sensor
    mySensor = SM.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

    // Register sensor Listener
    SM.registerListener(this, mySensor, SensorManager.SENSOR_DELAY_NORMAL);

    // Assign TextView
    xText = (TextView)findViewById(R.id.xText);
    yText = (TextView)findViewById(R.id.yText);
    zText = (TextView)findViewById(R.id.zText);
//        yText.setText(ab);
}

@Override
protected void onResume() {
    super.onResume();
    SM.registerListener(this, mySensor, SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
    // Not in use
}

@Override
public void onSensorChanged(SensorEvent event) {
    if(event.values[0]>3){
        final int[] proper_noun = {1,2,3,4,5,6};
        Random random = new Random();
        int index = random.nextInt(proper_noun.length);
        ab = proper_noun[index];

        Intent i = new Intent(MainActivity.this, ShakeActivity.class);
        Bundle b = new Bundle();

        b.putInt("angka",ab);

        i.putExtras(b);

        startActivity(i);
        SM.unregisterListener(this);

    }
    xText.setText("X: " + event.values[0]);

//        yText.setText("Y: " + event.values[1]);
//        zText.setText("Z: " + event.values[2]);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
 }
}
package com.example.pc.accelerometer;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

/**
 * Created by PC-Parinussa on 6/26/2017.
 */

public class ShakeActivity extends Activity {
    TextView namaTv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.shake_layout);

        Bundle b = getIntent().getExtras();
        int angka = b.getInt("angka");
    namaTv = (TextView) findViewById(R.id.shakeID);

    namaTv.setText("Random angka : "+angka);
}
}

我会这样做的。设置x、y、z值的阈值(设为10.0)。当你的所有方向都高于阈值0.5-1秒时,很可能有人在晃动手机。不确定什么是最准确的阈值,我想你必须“反复试验”才能做到这一点。继续掷骰子,直到你的值再次降到阈值以下。我会这样做。设置x、y、z值的阈值(设为10.0)。当你的所有方向都高于阈值0.5-1秒时,很可能有人在晃动手机。不确定什么是最准确的阈值,我想你必须“反复试验”才能做到这一点。继续掷骰子,直到你的值再次低于阈值。