- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
谁能帮我解释为什么加速度计不停止?有 unregisterListener 行,但什么也没有。
代码如下:
public class Festivale extends Activity implements SensorEventListener {
Button button;
CheckBox video, gps, acc;
Boolean recording = false;
public static SQLiteDatabase db;
String strlocation;
String city;
private SensorManager sensorManager;
Chronometer myChronometer;
EditText myEditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myChronometer = (Chronometer) findViewById(R.id.chronometer);
myEditText = (EditText) findViewById(R.id.editText1);
addDataBase(); // adatbázist hoz létre
addListenerOnButton();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(
"Készítette: Lakatos Dávid\nEmail: david.lakatos@gmail.com\nTel.: +3620/427-1166")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog alert = builder.create();
alert.show();
return true;
}
private void addGPSListener() {
String text = myEditText.getText().toString();
float f = Float.valueOf(text.trim()).floatValue();
float update = f * 1000;
if (update < 100 || update > 1000000) {
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(Festivale.this).create();
alertDialog.setTitle("Hiba!");
alertDialog.setMessage("Helytelen frissítési idõ:\n" + update
/ 1000 + " sec!");
alertDialog.show();
} else {
globalconstant.mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
globalconstant.mlocListener = new MyLocationListener();
globalconstant.mlocManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, (long) update, 0,
globalconstant.mlocListener);
}
}
/* Létrehozzuk a program adatbázisát */
private void addDataBase() throws SQLException {
db = openOrCreateDatabase("Festivale.db",
SQLiteDatabase.CREATE_IF_NECESSARY, null);
}
public void addListenerOnButton() {
button = (Button) findViewById(R.id.button1);
button.setEnabled(true);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
gps = (CheckBox) findViewById(R.id.checkBox1);
acc = (CheckBox) findViewById(R.id.checkBox2);
video = (CheckBox) findViewById(R.id.checkBox3);
/*
* GPS
*/
if (gps.isChecked()) {
if (recording) {
globalconstant.mlocManager
.removeUpdates(globalconstant.mlocListener);
button.setText("Start");
recording = false;
myChronometer.stop();
myChronometer.setBase(SystemClock.elapsedRealtime());
acc.setClickable(true);
video.setClickable(true);
myEditText.setFocusable(true);
gps.setChecked(false);
} else {
acc.setClickable(false);
video.setClickable(false);
myEditText.setFocusable(false);
myChronometer.setBase(SystemClock.elapsedRealtime());
myChronometer.start();
db.setVersion(1);
db.setLocale(Locale.getDefault());
db.setLockingEnabled(true);
final String gps =
"CREATE TABLE IF NOT EXISTS GPS_Values ("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT, Latitude float(10, 8), Longitude float(10, 8),Horizontal_Accuracy INTEGER,Altitude INTEGER,City TEXT,cur_timestamp TIMESTAMP);";
db.execSQL(gps);
addGPSListener();// meghívja a gps-t
recording = true;
button.setText("STOP");
}
}
/*
* Gyorsulásmérõ
*/
if (acc.isChecked()) {
if (recording) {
StopListenerAcc();
button.setText("Start");
recording = false;
myChronometer.stop();
myChronometer.setBase(SystemClock.elapsedRealtime());
gps.setClickable(true);
video.setClickable(true);
myEditText.setFocusable(true);
acc.setChecked(false);
} else {
gps.setClickable(false);
video.setClickable(false);
myEditText.setFocusable(false);
myChronometer.setBase(SystemClock.elapsedRealtime());
myChronometer.start();
db.setVersion(1);
db.setLocale(Locale.getDefault());
db.setLockingEnabled(true);
final String acc =
"CREATE TABLE IF NOT EXISTS Accelerometer ("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT, X_Coordinate float(10, 6), Y_Coordinate float(10, 6), Z_Coordinate float(10, 6), cur_timestamp TIMESTAMP);";
db.execSQL(acc);
// Bekapcsolja az Accelerometer-t
addListenerAcc();
recording = true;
button.setText("STOP");
}
}
/*
* VideoRögzítés meghívása
*/
if (video.isChecked()) {
// kamera meghívása
Intent myIntent = new Intent(Festivale.this, record.class);
Festivale.this.startActivity(myIntent);
}
}
});
}
private void StopListenerAcc() {
// TODO Auto-generated method stub
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
// add listener
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
sensorManager.unregisterListener(this);
}
// GPS
public class MyLocationListener implements LocationListener {
public void onLocationChanged(Location loc) {
float szel = (float) loc.getLatitude();
float hossz = (float) loc.getLongitude();
int horiAcc = (int) (loc.getAccuracy());
int Altitude = (int) (loc.getAltitude());
String test = String.format("%.08f", szel);
String test2 = String.format("%.08f", hossz);
Geocoder geocoder = new Geocoder(Festivale.this,
Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocation(szel, hossz,
1);
city = addresses.get(0).getLocality();
// Toast.makeText(getApplicationContext(), city,
// Toast.LENGTH_SHORT)
// .show();
} catch (IOException e) {
e.printStackTrace();
}
ContentValues gps_values = new ContentValues();
gps_values.put("Latitude", test);
gps_values.put("Longitude", test2);
gps_values.put("Horizontal_Accuracy", horiAcc);
gps_values.put("Altitude", Altitude);
gps_values.put("City", city);
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
gps_values.put("cur_timestamp", dateFormat.format(date));
try {
db.beginTransaction();
db.insert("GPS_Values", null, gps_values);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
// String Text = "My current location is: " + "Latitude = "
// + loc.getLatitude() + "\nLongitude = " + loc.getLongitude();
// Toast.makeText(getApplicationContext(), Text, Toast.LENGTH_SHORT)
// .show();
}
protected void onPause() {
// super.onPause();
globalconstant.mlocManager
.removeUpdates(globalconstant.mlocListener);
}
public void onProviderDisabled(String provider) {
Toast.makeText(getApplicationContext(), "Gps Disabled",
Toast.LENGTH_SHORT).show();
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
// show gps otions
Intent gpsOptionsIntent = new Intent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(gpsOptionsIntent);
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.cancel();
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(
Festivale.this);
builder.setMessage("A GPS nincs aktiválva!\nAktiválja most?")
.setPositiveButton("Aktivál", dialogClickListener)
.setNegativeButton("Nem", dialogClickListener).show();
}
public void onProviderEnabled(String provider) {
Toast.makeText(getApplicationContext(), "Gps Enabled",
Toast.LENGTH_SHORT).show();
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}// gps vége
private void addListenerAcc() {
// TODO Auto-generated method stub
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
// add listener
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
}
// Accelerometer
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
// assign directions
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
// Toast.makeText(Festivale.this,
// "X: " + x + "\nY: " + y + "\nZ: " + z, Toast.LENGTH_LONG)
// .show();
ContentValues x_values = new ContentValues();
x_values.put("X_Coordinate", x);
x_values.put("Y_Coordinate", y);
x_values.put("Z_Coordinate", z);
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
x_values.put("cur_timestamp", dateFormat.format(date));
db.insert("Accelerometer", null, x_values);
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}
谢谢!
最佳答案
试试这个来注销你的加速度计怎么样(对我有用):
/**
* <b><i>public void useAccelerometer(boolean use)</i></b>
* <br>
* Since: API 1
* <br>
* <br>
* Set if you would like to enable the use of the accelerometer.
*
* @param use
* <br>
* True will enable the use of the accelerometer.
* <br>
* False will disable the use of the accelerometer.
*
*/
public void useAccelerometer(boolean use) {
if(use == true) {
manager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_GAME);
}
else {
manager.unregisterListener(this, accelerometer);
}
}
关于Android,加速度计不会停止不知道为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11772505/
大家早上好! 我遇到以下问题:我有传感器加速度计并添加了一个可以帮助我输入另一个 Intent 的按钮,但不知道为什么这个按钮不起作用!有什么建议吗?谢谢帮助!! 程序是这样的: package co
我想使用手机加速计来滚动球中的球。运动有效正确的是,问题在于球撞到墙时。我怎样才能顺利滚动球沿着大球内侧滑动的动画? 这是我当前移动球并检查交点的代码: onSuccess: function
我是 Core Motion 的新手,我很困惑。有人可以用简单的术语解释这些输入衡量的是什么以及它们如何有用吗? 最佳答案 加速度计通过“感觉”施加到设备上的运动力来测量相对于重力的运动。运动力可以描
尝试测量基于距离的加速度(移动加速度计)。如果那是真的 Accelerometer { id: accel dataRate: 1000 / 25 onReadingChang
我需要实现一个震动识别器,我正在使用设备上的加速度计来实现这一点。但是,当我检查从传感器获得的值时,它们似乎因设备而异。例如,我在一台设备上得到 0-8 的值范围作为力(经过一些计算),在另一台设备上
我一直在尝试使用 sensors 实现陀螺仪图像查看器包,然而,结果似乎非常滞后。我在 YouTube 上发现了一个类似的项目它试图实现类似的目标,但正如您在视频中看到的那样,动画也非常滞后。 以下代
我必须找到解决问题的最佳方法,尝试识别 body 运动(口袋里有 iPhone),例如行走、停止、左转/右转、坐下。 我正在考虑只是启发式地查找与每个操作相对应的数据,然后根据该数据(带有阈值)检查传
如何平滑 iPhone/iPod Touch 的加速计? 最佳答案 您可以在使用之前对传入数据应用过滤器来平滑加速度计数据。您要做的第一件事是为您的过滤器设置一个常量。 #define kFilter
我想使用陀螺仪、加速度计和磁力计来获得 3 轴完全平滑的旋转。 第一个问题是我的输出有很大的噪音,我想知道如何消除它。 第二个问题是陀螺仪漂移,我认为应该用卡尔曼滤波器来解决。 第三个问题是加速度计。
我编写了让玩家左右移动的代码,当玩家向左移动时它有一个动画,当他向右移动时它有另一个动画。 这是代码(dt 是 deltaTime): // Moving player desktop
我最近在我的摩托罗拉 Droid 上使用 Android SDK 和适用于 Android SDK 的 Adobe AIR 来研究 Android 加速度计。我注意到加速度计工作得很好,但我想知道
我想创建一个用户在开车时无法打开短信的应用程序(意味着通过检查 android 设备特定速度的加速度计)。在 android 中是否可行,如果是,那么我们如何做到这一点。谢谢。 .尼山贾恩 最佳答案
我正在开发一个 iPhone 应用程序,我们试图在其中计算移动汽车的加速度。类似的应用程序已经完成了这一点(Dynolicious),但不同的是,这个应用程序是为一般城市驾驶而设计的,而不是在拖拉带上
当水平放置在平面上时,我的 Galaxy S4 报告恒定加速度 X:0.2 Y:-0.1 Z:10.4 由于它平稳地水平放置在 table 上,因此期望报告 X:0 Y:0 Z:10.4 通过检查与我
我目前正在开发一个 android 应用程序。我必须用事件时间记录加速度计传感器事件坐标。我得到了像“3497855005850”这样的传感器事件时间戳,但我无法将事件时间戳转换为用户可读的日期时间格
我正在尝试构建一个应用程序,用于从我的手机上读取加速度计的值,该应用程序仅支持 Android 2.1。 如何使用兼容 2.1 的代码从加速度计中读取数据? 最佳答案 从这里开始: public cl
我有两个问题: 1. 是否可以检索 b2Body 的当前 X 坐标?我知道 API GetPosition 但这还不够具体,我需要专门的 X 坐标。 2. 是否可以在我的 UIAcceleromete
Phonegap 加速度计似乎返回如下 y 值: // +10 y axis = straight up = 0/360 deg // -10 y axis = straight down = 180
我一直在使用这个代码 Android: I want to shake it实现摇动运动检测器。但实际上当我在我的智能手机上运行它时,它什么也没做。我尝试使用断点来检查,但它永远不会进入 if (mA
我正在 Android 中开发一个应用程序以及 Android Wear 支持。在查看来自 https://developer.android.com/training/building-wearab
我是一名优秀的程序员,十分优秀!