Android传感器列表视图

时间:2011-11-06 11:15:46

标签: android list listview sensor

我是android developpement的新手,我需要在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
}

}

它似乎适用于编写此文件的te android开发人员,但我无法使其在我的设备上运行(请参阅:“// ERROR”)。 我认为我需要正确的.xml代码和.java代码的一些声明。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

这个问题是最新的吗?

如果是的话。以下是一些提示:

  1. XML-Layout与您在ExempleSensorListActivity中请求的内容不一致。例如。 XML-File没有任何名为“sensor_listview”的id。

  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. 您应该熟悉ListView并将传感器列表添加到ArrayAdapter。

  6. 这是一个例子:

  7. 公共类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));
    }
    

    }

    如果您想拥有传感器的名称,您必须将所有传感器放在一个新的列表中并且只包含名称,或者您必须覆盖List的toString()方法。

    希望它有所帮助。

    沃尔克