#android #button #android-activity #onclick
#Android #кнопка #android-активность #onclick
Вопрос:
У меня есть приложение для акселерометра, которое я разрабатываю для Android, и я хочу запускать и останавливать действие с помощью кнопок «пуск» и «стоп». У меня возникли проблемы с реализацией кнопок в самом коде, и я ищу некоторую помощь. Вот мой основной файл Java.
package com.*****.accelo;
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.widget.TextView;
import android.widget.Button;
import android.view.View.OnClickListener;
public abstract class AcceloActivity extends Activity implements SensorEventListener,
OnClickListener {
TextView textViewX, textViewY, textViewZ, textViewError;
String blank;
Button buttonStop, buttonStart;
StringBuilder builderx = new StringBuilder();
StringBuilder buildery = new StringBuilder();
StringBuilder builderz = new StringBuilder();
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textViewError = (TextView) findViewById(R.id.textViewError);
textViewX = (TextView) findViewById(R.id.textViewX);
textViewY = (TextView) findViewById(R.id.textViewY);
textViewZ = (TextView) findViewById(R.id.textViewZ);
buttonStart = (Button) findViewById(R.id.buttonStart);
buttonStop = (Button) findViewById(R.id.buttonStop);
//Button listener
buttonStart.setOnClickListener(this);
buttonStop.setOnClickListener( this);
SensorManager manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor accelerometer = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
if(!manager.registerListener(this, accelerometer,
SensorManager.SENSOR_DELAY_UI)){
}
textViewX.setText(blank);
textViewY.setText(blank);
textViewZ.setText(blank);
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
builderx.setLength(0);
buildery.setLength(0);
builderz.setLength(0);
builderx.append("X: " event.values[0]);
buildery.append("Y: " event.values[1] );
builderz.append("Z: " event.values[2]);
textViewX.setText(builderx.toString());
textViewY.setText(buildery.toString());
textViewZ.setText(builderz.toString());
textViewError.setText(blank);
}
Заранее спасибо!
Ответ №1:
Вы получаете ссылку на кнопки из ресурсов, а затем никогда ничего с ними не делаете. Что вы подразумеваете под «некоторыми проблемами с реализацией»? Если у вас возникла конкретная проблема или возникла ошибка, пожалуйста, добавьте эту информацию в вопрос, чтобы мы могли вам помочь. Если вы просто не знаете, как использовать кнопки в Android, в Интернете есть множество хороших сайтов, но вам, вероятно, следует начать здесь http://developer.android.com/reference/android/widget/Button.html .
[Правки]
Поскольку это ваш первый язык и первая попытка заставить что-то подобное работать, давайте рассмотрим несколько простых шагов для начала, а затем вы сможете расширить оттуда.
Я предполагаю, что поиск ответа в Google на данный момент является почти рефлексивным, но вот несколько хороших мест для чтения:
- http://developer.android.com/reference/android/widget/Button.html (упомянутый выше)
- http://developer.android.com/resources/browser.html?tag=sample (Примеры Android)
- http://www.ibm.com/developerworks/opensource/library/os-android-sensor / (пример датчика от IBM)
В общем, что вам нужно сделать, это переопределить onTouchEvent для ваших кнопок http://developer.android.com/guide/topics/ui/ui-events.html таким образом, вы можете обрабатывать вводимые пользователем данные, а затем записывать / сравнивать интересующие вас значения. Из того, что вы упомянули, что хотите сделать, я не уверен, что расширение SensorEventListener — это действительно то, что вы хотите. Если вы просто пытаетесь зафиксировать изменения от начала до конца нажатий на кнопки, вы можете просто обрабатывать события кнопок и записывать / анализировать / отображать данные, не беспокоясь об отдельных обновлениях датчиков. Если, с другой стороны, вы действительно хотите отображать «живые» данные датчика между запуском и остановкой, вам, вероятно, понадобится SensorEventListener.
Просмотрите учебные пособия Google и руководства по API, просмотрите столько примеров, сколько сможете найти, и вы должны быть в пути. Удачи в вашем проекте.
Комментарии:
1. Обновленный код, но все еще неясно, как на самом деле использовать кнопки для запуска прослушивателя датчиков и его завершения.
2. @Slicekick — Отредактировано, чтобы поделиться некоторыми мыслями о начале работы с вашим проектом.
3. @Slicekick — Я не верю, что вы запускаете и останавливаете прослушиватель датчиков. Вы регистрируете и отменяете регистрацию своего слушателя с помощью датчика. Сам датчик продолжает работать. Ваше приложение просто перестает обращать на это внимание. developer.android.com/reference/android/hardware /…
4. Спасибо за ваш вклад! Причина, по которой я хочу, чтобы функциональность кнопок заключалась в основном в том, чтобы остановить действие после того, как пользователь закончит считывать активные значения с акселерометра. Если активность не прекратится, то аккумулятор разрядится довольно быстро.