2015-07-03 10 views
5

यदि उपयोगकर्ता फोन चालू करता है तो मैं अपने पाठ को भाषण पढ़ने के लिए रोक कर उस पर प्रतिक्रिया करना चाहता हूं। यह मेरे ऐप के लिए एक अच्छी सुविधा होगी, लेकिन मैं इस गति का पता कैसे लगा सकता हूं? मैं गति सेंसर से वास्तव में परिचित नहीं हूं और मुझे यह विशिष्ट गति श्रोता कहीं भी नहीं मिला, ज्यादातर स्क्रीन उन्मुखताएं। सहायता के लिए धन्यवाद!एंड्रॉइड में टर्नओवर गति का पता कैसे लगाएं?

+0

बस एक विचार: यदि "फोन चेहरा नीचे डाल" ठीक है (के रूप में विरोध किया तो बस इस पर बीच हवा में मोड़ करने के लिए), तो व्यापक प्रकाश के अचानक काला का पता लगाने के काम कर सकते हैं ([यहाँ देख] (http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_LIGHT)) यह नहीं पता कि इसके लिए श्रोता है या नहीं। – TripeHound

+0

अगर मैं इसका उपयोग कर सकता हूं तो इसे बाद में (सोमवार को) देखेगा। प्रलेखन का कहना है कि पर्यावरण सेंसर का उपयोग करना बहुत आसान है, इसलिए मुझे उम्मीद है :) –

उत्तर

1

यह नमूना गतिविधि दर्शाती है कि उपकरण चालू होने पर पता लगाने के लिए डिवाइस के गुरुत्वाकर्षण सेंसर का उपयोग कैसे किया जा सकता है। विधि onSensorChanged() में, factor शब्द निर्धारित करता है कि "चालू करें" कितना पूरा होना चाहिए। विशिष्ट सीमा 0.7 से 0.95 हो सकती है।

एंड्रॉइड एपीआई 9 में गुरुत्वाकर्षण सेंसर के लिए समर्थन जोड़ा गया था। सभी उपकरणों में गुरुत्वाकर्षण सेंसर नहीं है।

public class MainActivity extends AppCompatActivity implements SensorEventListener { 

    private static final String TAG = "Demo"; 

    private SensorManager mSensorManager; 
    private Sensor mGravitySensor; 
    private boolean mFacingDown; 

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

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     final float factor = 0.95F; 

     if (event.sensor == mGravitySensor) { 
      boolean nowDown = event.values[2] < -SensorManager.GRAVITY_EARTH * factor; 
      if (nowDown != mFacingDown) { 
       if (nowDown) { 
        Log.i(TAG, "DOWN"); 
       } else { 
        Log.i(TAG, "UP"); 
       } 
       mFacingDown = nowDown; 
      } 
     } 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
     mGravitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY); 

     if (mGravitySensor == null) { 
      Log.w(TAG, "Device has no gravity sensor"); 
     } 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     if (mGravitySensor != null) { 
      mSensorManager.registerListener(this, mGravitySensor, SensorManager.SENSOR_DELAY_NORMAL); 
     } 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     mSensorManager.unregisterListener(this); 
    } 
} 
+0

धन्यवाद! जब मैं कॉलेज में वापस आऊंगा, तो मैं सोमवार को इसे आजमाउंगा, मैं अपना ऐप वहां एक असाइनमेंट के रूप में कर रहा हूं। (इसे स्वीकार करने के बारे में भूलने के लिए नहीं :) :) –

+0

क्या आप मेरी मदद कर सकते हैं मैं कक्षा में इसका उपयोग कैसे कर सकता हूं (इसका परीक्षण किया, अच्छी तरह से काम करता है)? मैं इसे कई सक्रियताओं में उपयोग करना चाहता हूं, इसलिए मैंने सोचा कि मैं इसे सार्वजनिक कक्षा में कार्यान्वित कर रहा हूं, लेकिन इसे काम करने में परेशानी हो रही है, अभी मुझे 0 त्रुटि मिलती है, बस ऐप मेरे फोन पर शुरू नहीं होगा: ओ –

+0

असल में ऐप शुरू नहीं करना एक अन्य कारण के लिए था, मुझे बस इसे अपने फोन से हटाना पड़ा और इसे पुनः स्थापित करना पड़ा। –

संबंधित मुद्दे