【问题标题】:Android Sensor List ViewAndroid 传感器列表视图
【发布时间】:2011-11-06 11:15:45
【问题描述】:

我是 android developmentpement 的新手,我需要查看 5 月 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 代码上的一些声明。

感谢您的帮助。

【问题讨论】:

  • 发布 XML 布局以及 logcat 输出
  • 这里是xml文件:schemas.android.com/apk/res/android" android:layout_width="fill_parent" android :layout_height="fill_parent" android:orientation="vertical" > 原来的xml。什么是 logcat 输出?谢谢

标签: android list listview sensors


【解决方案1】:

这个问题是最新的吗?

如果是。这里有一些提示:

  1. XML-Layout 与您在 ExempleSensorListActivity 中请求的内容不一致。例如。 XML 文件没有任何名为“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. 您应该熟悉 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() 方法。

希望对你有所帮助。

沃尔克

【讨论】:

    猜你喜欢
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    相关资源
    最近更新 更多