Просмотр списка датчиков Android

#android #list #listview #sensors

#Android #Список #просмотр списка #датчики

Вопрос:

я новичок в разработке 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. Опубликуйте макет XML, а также вывод logcat

2. Вот XML-файл: <?xml version=»1.0″ encoding=»utf-8″?> <LinearLayout xmlns:android=» schemas.android.com/apk/res/android » android:layout_width=»fill_parent» android:layout_height=»fill_parent» android:orientation=»vertical»> <TextView android:layout_width=»fill_parent» android:layout_height=»wrap_content» android:text=»@string/hello» /> </LinearLayout> это исходный XML. Каков вывод logcat? Спасибо

Ответ №1:

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

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

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

  2. После «super.onCreate (savedInstanceState);» вы должны вызвать прямой «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 расширяет активность {

 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