2015-04-13 7 views
19

मैं डिवाइस गति का पता लगाने के लिए एक रिसीवर लिखा था बदल गया है या में यह पसंद नहीं Manifest.xmlमैं प्रसारण रिसीवर में गति सेंसर का पता कैसे लगाऊंगा?

<receiver android:name="com.hanuman.sensor.receiver.SensorReceiver" > 
      <intent-filter 
       android:enabled="true" 
       android:exported="false" > 
       <action android:name="android.intent.action.USER_PRESENT" /> 
      </intent-filter> 
     </receiver> 

और रिसीवर onReceive() विधि कोड है अंदर:

String action = intent.getAction(); 
     if (action.equals(Intent.ACTION_USER_PRESENT)) { 
      System.out.println("User is present"); 
      Intent s = new Intent(context, MainActivity.class); 
      s.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(s); 
     } else { 
      System.out.println("User is not present"); 
     } 

अंत में मेरा सवाल यह है कि, जब इसे गति दिया जाता है तो सेंसर का पता नहीं लगा रहा है, यह पता लगा रहा है कि मेरा डिवाइस अनलॉक में है तो यह मेरी मुख्य गतिविधि पर कॉल कर रहा है, लेकिन मैं यह जानना चाहता हूं कि मेरा डिवाइस कब गति बदल दी गई है तो मैं रिसीवर में पता लगाना चाहता हूँ। मैं उसे कैसे कर सकता हूँ?। जैसे

below-
SensorManager sensorMan = (SensorManager)getSystemService(SENSOR_SERVICE); 

Sensor sensor = sensorMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

रजिस्टर श्रोता सेंसर

sensorMan.registerListener(context, sensor, 
     SensorManager.SENSOR_DELAY_UI); 

तो ओवरराइड onSensorChanged() विधि गति में परिवर्तन सुनने के लिए SensorManager की

+0

अपने CPU जाग या सो है? यद्यपि आप अपना प्रसारण प्राप्त कर रहे हैं, लेकिन आप गति निर्धारित करने में सक्षम नहीं हैं, ऐसा करने के लिए आपको नींद मोड में जाने पर अपने सीपीयू को जागने की जरूरत है। शुरू करने के लिए [इसे जांचें] (https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html) – Skynet

+0

यदि यह नींद मोड में है तो मेरी डिवाइस गति का पता नहीं लगाया गया है? – Hanuman

+0

यदि आपका डिवाइस नींद मोड में है - दुख की बात नहीं, तो अपने डिवाइस को आंशिक वाकेलॉक का उपयोग करें। लेकिन एक बार जब आप अपने परिचालन के साथ कर लेंगे तो संसाधनों को छोड़ना सुनिश्चित करें। यह बैटरी महत्वपूर्ण है। – Skynet

उत्तर

10

प्राप्त वस्तु का पता लगाने के बदलाव

@Override 
public void onSensorChanged(SensorEvent event) { 
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){ 
    //do some stuff 
    } 
    //do some other code for other Sensor type 
    } 
1

आप नहीं कर सकते हैं और आपको ऐसा नहीं करना चाहिए, क्योंकि जब स्क्रीन सेंसर से निकलती है ' स्वचालित रूप से बंद हो गया है, यह अधिकांश उपकरणों में सिस्टम द्वारा किया जाता है, कुछ डिवाइस नेक्सस की तरह स्क्रीन बंद होने के बाद सेंसर का समर्थन करते हैं 4. लेकिन आप रिसीवर बना सकते हैं जो स्क्रीन को सुनकर स्क्रीन पर सुनेंगे।

सार्वजनिक वर्ग स्क्रीन फैली BroadcastReceiver {

@Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
      screenOn(); 
     } 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      screenOff(); 
     } 

    } 


    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(Intent.ACTION_SCREEN_OFF); 
    intentFilter.addAction(Intent.ACTION_SCREEN_ON); 
    mReceiver = new Screen(); 
    registerReceiver(mReceiver, intentFilter); 
संबंधित मुद्दे