Nadal problem z akcelerometrem jest nierozwiązany. Spróbowałem zaimplementować akcelerometr, ale niestety nie działa (na razie w ogóle). Poniżej podaję kod źródłowy. Jest ktoś w stanie mi pomóc ?? W razie potrzeby mogę wysłać wyeksportowany program do pliku .apk
package program.kalkulator;
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.os.Vibrator;
public class Kalkulator extends Activity implements android.view.View.OnClickListener, SensorEventListener {
/** Called when the activity is first created. */
private Vibrator v;
private SensorManager sensorManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
Button zamykanie = (Button)findViewById(R.id.button5);
zamykanie.setOnClickListener(this);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
public void buttonClick(View view) {
EditText numA = (EditText)findViewById(R.id.editText1);
EditText numB = (EditText)findViewById(R.id.editText2);
EditText wynik = (EditText)findViewById(R.id.editText3);
float num1 = Float.parseFloat(numA.getText().toString());
float num2 = Float.parseFloat(numB.getText().toString());
float eq = 0;
switch(view.getId()) {
case R.id.button1:
eq = num1 + num2;
v.vibrate(100);
break;
case R.id.button2:
eq = num1 - num2;
v.vibrate(100);
break;
case R.id.button3:
eq = num1 * num2;
v.vibrate(100);
break;
case R.id.button4:
eq = num1 / num2;
v.vibrate(100);
break;
}
wynik.setText(String.format("%f", eq));
}
public void onClick(View arg0) {
v.vibrate(500);
finish();
}
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float accelpoziom = (float) x;
float accelpion = (float) y;
EditText numA = (EditText)findViewById(R.id.editText1);
EditText numB = (EditText)findViewById(R.id.editText2);
EditText wynik = (EditText)findViewById(R.id.editText3);
if (accelpoziom > (20f - SensorManager.GRAVITY_EARTH)) {
float num1 = Float.parseFloat(numA.getText().toString());
float num2 = Float.parseFloat(numB.getText().toString());
float eq = 0;
eq = num1 + num2;
v.vibrate(100);
wynik.setText(String.format("%f", eq));
};
if (accelpoziom < (20f - SensorManager.GRAVITY_EARTH)) {
float num1 = Float.parseFloat(numA.getText().toString());
float num2 = Float.parseFloat(numB.getText().toString());
float eq = 0;
eq = num1 - num2;
v.vibrate(100);
wynik.setText(String.format("%f", eq));
};
if (accelpion > (20f - SensorManager.GRAVITY_EARTH)) {
float num1 = Float.parseFloat(numA.getText().toString());
float num2 = Float.parseFloat(numB.getText().toString());
float eq = 0;
eq = num1 * num2;
v.vibrate(100);
wynik.setText(String.format("%f", eq));
}
if (accelpion < (20f - SensorManager.GRAVITY_EARTH)) {
float num1 = Float.parseFloat(numA.getText().toString());
float num2 = Float.parseFloat(numB.getText().toString());
float eq = 0;
eq = num1 / num2;
v.vibrate(100);
wynik.setText(String.format("%f", eq));
}
}
}