Просмотр списка датчиков Android - PullRequest
1 голос
/ 06 ноября 2011

Я новичок в разработке android и мне нужно просмотреть список датчиков на майском устройстве Android 3.1.

У меня есть этот код:

package milos.exemplesensorlist;

import java.util.List;


import milos.exemplesensorlist.R;
import android.app.ListActivity;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;


public class ExempleSensorListActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //get all sensors
    SensorManager sensorManager = (SensorManager) this.getSystemService(SENSOR_SERVICE);
    final List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);

    setContentView(R.layout.main);

    sensorListView = (ListView) findViewById(R.id.sensor_listview);   //ERROR
    sensorListView.setOnItemLongClickListener(new OnItemClickListener() { //ERROR
        public void onItemClick(AdapterView<?> arg0, View arg1, int position, //ERROR
                long arg3) {
            showSensorInfo(sensors.get(position).getType());
        }
    });



    //set an empty adapter for ListView
    ArrayAdapter<String> sensorNames = new ArrayAdapter<String>(getApplicationContext(),
            android.R.layout.simple_list_item_1);


    for (Sensor s : sensors) {
        sensorNames.add(s.getName());
        Log.i("sensor", s.getName());
    }
    sensorListView.setAdapter(sensorNames);  //ERROR
}

}

Кажется, это работает для разработчиков Android, которые пишут это, но я не могу заставить его работать на моем устройстве (см .: "// ОШИБКА").Я думаю, что мне нужен правильный код .xml и некоторые объявления о коде .java.

Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 17 июля 2012

Актуален ли этот вопрос?

Если да. Вот несколько советов для вас:

  1. XML-макет не согласуется с тем, что вы запрашиваете в вашей ExempleSensorListActivity. Например. XML-файл не имеет идентификатора с именем «sensor_listview».

  2. После «super.onCreate (saveInstanceState);» Вы должны вызвать прямо "setContentView (R.layout.main);". Остальное после этого на начальные звонки.

  3. Ваш "sensorListView = (ListView) findViewById (R.id.sensor_listview);" должен быть записан как: "ListView sensorListView = (ListView) findViewById (R.id.sensor_listview);"

  4. Практически везде можно найти идею о запросе списка датчиков (например, http://developer.android.com/guide/topics/sensors/sensors_overview.html#sensors-identify)

  5. Вы должны ознакомиться с ListViews и добавить список датчиков в свой ArrayAdapter.

  6. Вот пример:

открытый класс SensorikTestActivity расширяет Activity {

private ListView listView;
private SensorManager mSensorManager;
private List<Sensor> deviceSensors = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    listView = ((ListView) findViewById(R.id.listView1));

    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
    listView.setAdapter(new ArrayAdapter<Sensor>(this,
            android.R.layout.simple_list_item_1, deviceSensors));
}

}

Если вы хотите иметь имена датчиков, вы должны поместить все ваши датчики в новый список и только с именами, или вам нужно перезаписать метод toString () вашего списка.

Надеюсь, это немного поможет.

Volker

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...