2017-03-08 41 views
0

我需要在Fragment类使用SensorManager,但每当我初始化SensorManager用以下方法:如何在片段类中使用传感器事件方法?

mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 

的Android Studio不接受它,并生成一个错误:

Cannot resolve method

哪有我在fragment中正确实现了它的事件监听器?

+0

'getActivity()。getSystemService..' –

+0

感谢您的回复其工作,但我想实现传感器事件侦听片段是有任何的例子吗? –

+0

会有很多,只需要谷歌它与你需要什么 –

回答

0
public class MyFragment extends Fragment implements SensorEventListener { 
private SensorManager mSensorManager; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mSensorManager = (SensorManager)   

this.getActivity().getSystemService(Activity.SENSOR_SERVICE); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.mylayout, container, false); 

    return rootView; 
} 

@Override 
public void onSensorChanged(SensorEvent event) { 
    float x = event.values[0], y = event.values[1]; 
} 

@Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } 

@Override 
public void setMenuVisibility(boolean menuVisible) { 
    super.setMenuVisibility(menuVisible); 

    // First starts (gets called before everything else) 
    if(mSensorManager == null) { 
     return; 
    } 

    if(menuVisible) { 
     this.registerSensorListener(); 
    } else { 
     this.unregisterSensorListener(); 
    } 
} 

@Override 
public void onStart() { 
    super.onStart(); 

    if(this.getUserVisibleHint()) { 
     this.registerSensorListener(); 
    } 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    this.unregisterSensorListener(); 
} 

private void registerSensorListener() { 
    mSensorManager.registerListener(this, 
mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0), 
SensorManager.SENSOR_DELAY_FASTEST); 
} 

private void unregisterSensorListener() { 
    mSensorManager.unregisterListener(this); 
} 

}

相关问题