我是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代码的一些声明。
感谢您的帮助。
答案 0 :(得分:2)
这个问题是最新的吗?
如果是的话。以下是一些提示:
XML-Layout与您在ExempleSensorListActivity中请求的内容不一致。例如。 XML-File没有任何名为“sensor_listview”的id。
“super.onCreate(savedInstanceState);”之后你应该直接调用“setContentView(R.layout.main);”。之后的其余部分进行初始调用。
您的“sensorListView =(ListView)findViewById(R.id.sensor_listview);”应该写成:“ListView sensorListView =(ListView)findViewById(R.id.sensor_listview);”
您几乎可以在任何地方找到有关请求传感器列表的想法(例如http://developer.android.com/guide/topics/sensors/sensors_overview.html#sensors-identify)
您应该熟悉ListView并将传感器列表添加到ArrayAdapter。
这是一个例子:
公共类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()方法。
希望它有所帮助。
沃尔克