簡體   English   中英

Android-如何根據傳感器名稱獲取傳感器詳細信息?

[英]Android - How to get sensor details based on sensor name?

我正在編寫一個簡單的應用程序作為練習-將設備上所有傳感器的列表顯示為ListView,並在ListView中單擊每個傳感器名稱時在新活動中顯示當前傳感器值/細節。

我的ListView工作正常,到目前為止,可以將傳感器名稱傳遞給新活動。 有沒有辦法使用此傳遞的名稱來獲取傳感器詳細信息? 似乎我無法使用putExtra()將傳感器本身傳遞給新活動。 還是有另一種方法?

SensorList活動:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_sensor_activity);

    sensorListView = (ListView) findViewById(R.id.sensorlist);
    sensorListView.setOnItemClickListener((AdapterView.OnItemClickListener) this); //allows each item in ListView to be clickable

    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

    sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL); //get list of sensors
    ArrayList<String> sensorNames =  new ArrayList<String>(); //list of sensor names

    //iterate through list of sensors, get name of each and append to list of names
    for(int i=0; i< sensorList.size(); i++) {
        String sensor= sensorList.get(i).getName();
        if(sensor == null || sensor.equals(""))
            continue;
        sensorNames.add(sensor);
    }

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1, sensorNames);
    sensorListView.setAdapter(adapter); //populate ListView with sensor names
}

@Override
public void onItemClick(AdapterView<?> adapter, View v, int position, long id ) {
    Intent sensorDetails = new Intent(ListSensorActivity.this, SensorDetailActivity.class);
    sensorDetails.putExtra("SENSOR_NAME", sensorList.get(position).getName()); //pass sensor name to detail activity
    startActivity(sensorDetails);
}

** SensorDetail活動**

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sensor_detail);

        sensorTitle = (TextView) findViewById(R.id.sensortitle);

        manager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);

        Bundle extras = getIntent().getExtras();
        sensorName = extras.getString("SENSOR_NAME");
        sensorTitle.setText(sensorName);
    }

將類型從傳感器傳遞到第二個活動,然后通過SensorManager.getDefaultSensor(type)請求該活動中的傳感器

請檢查以下內容:

 private  SensorManager mSensorManager;
 private  Sensor sensorNames;

並在課堂上

 mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
 sensorNames= mSensorManager.getDefaultSensor(Sensor.TYPE_ALL);

並根據位置從列表傳遞值:

  Intent intent= new Intent(this, SensorDetailActivity.class);
  intent.putExtra("SENSOR_NAME", sensorNames.get(position).toString()); 
  startActivity(intent);

讓我知道您是否仍然無法解決問題.. :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM