முதன்மை Android இன் சென்சார்கள்: வன்பொருள், மென்பொருள் மற்றும் பல பரிமாண

நூலாசிரியர்: John Stephens
உருவாக்கிய தேதி: 26 ஜனவரி 2021
புதுப்பிப்பு தேதி: 5 ஜூலை 2024
Anonim
"சியோபாய் டெஸ்ட்" உலகின் நினைவகம்: பேரரசின் வீழ்ச்சி-நோக்கியா பகுதி 2
காணொளி: "சியோபாய் டெஸ்ட்" உலகின் நினைவகம்: பேரரசின் வீழ்ச்சி-நோக்கியா பகுதி 2

உள்ளடக்கம்


இன்று, பெரும்பாலான நவீன ஆண்ட்ராய்டு சாதனங்கள் ஒரு சில சென்சார்களைக் கொண்டுள்ளன.

இந்த தகவலை நீங்கள் பல்வேறு வழிகளில் பயன்படுத்தலாம் - இது ஒளி நிலைகளை கண்காணிக்கிறதா, எனவே உங்கள் பயன்பாடு தானாகவே அதன் பிரகாசம் அல்லது வண்ணத் திட்டத்தை சரிசெய்ய முடியும்; சாதனத்தை சாய்ப்பது போன்ற சைகைகளைப் பயன்படுத்தி உங்கள் மொபைல் கேமுடன் தொடர்பு கொள்ள பயனரை அனுமதிக்கிறது; அல்லது பயனர் தங்கள் சாதனத்தை காதுக்கு வைத்திருக்கும் போதெல்லாம் தொடு நிகழ்வுகளை தானாக முடக்க ப்ராக்ஸிமிட்டி சென்சார் பயன்படுத்தலாம்.

இந்த கட்டுரையில், வன்பொருள் மற்றும் மென்பொருள் சென்சார்களின் வரம்பிலிருந்து ஒளி, அருகாமை மற்றும் இயக்கத் தரவை மீட்டெடுக்கும் மூன்று பயன்பாடுகளை உருவாக்குவோம். இந்த Android சென்சார்களையும் நாங்கள் உண்மையான நேரத்தில் கண்காணிப்போம், எனவே உங்கள் பயன்பாடு எப்போதும் சமீபத்திய தகவல்களுக்கான அணுகலைக் கொண்டுள்ளது.

இந்த கட்டுரையின் முடிவில், Android சென்சாரிலிருந்து ஒரு தரவை எவ்வாறு பிரித்தெடுப்பது மற்றும் அவற்றின் தரவை பல பரிமாண வரிசையின் வடிவத்தில் வழங்கும் சென்சார்களை எவ்வாறு கையாள்வது என்பது உங்களுக்குத் தெரியும்.


நான் என்ன Android சென்சார்களைப் பயன்படுத்தலாம்?

Android சென்சார்களை பின்வரும் வகைகளாக பிரிக்கலாம்:

  • சுற்றுச்சூழல் உணரிகள். இவை சுற்றுச்சூழல் நிலைமைகளான காற்றின் வெப்பநிலை, அழுத்தம், ஈரப்பதம் மற்றும் சுற்றுப்புற ஒளி அளவுகள் ஆகியவற்றை அளவிடுகின்றன.

  • நிலை உணரிகள். இந்த பிரிவில் சாதனத்தின் இயற்பியல் நிலையை அளவிடும் சென்சார்கள் உள்ளன, அதாவது அருகாமையில் உள்ள சென்சார்கள் மற்றும் புவி காந்த புலம் சென்சார்கள்.
    மோஷன் சென்சார்கள். இந்த சென்சார்கள் சாதன இயக்கத்தை அளவிடுகின்றன, மேலும் முடுக்க மானிகள், ஈர்ப்பு உணரிகள், கைரோஸ்கோப்புகள் மற்றும் சுழற்சி திசையன் சென்சார்கள் ஆகியவை அடங்கும்.

கூடுதலாக, சென்சார்கள் இருக்கலாம்:

  • வன்பொருள் அடிப்படையிலானது. இவை சாதனத்தில் கட்டமைக்கப்பட்ட இயற்பியல் கூறுகள் மற்றும் முடுக்கம் அல்லது சுற்றியுள்ள புவி காந்த புலங்களின் வலிமை போன்ற குறிப்பிட்ட பண்புகளை நேரடியாக அளவிடுகின்றன.
  • மென்பொருள் அடிப்படையிலானது, சில நேரங்களில் மெய்நிகர் சென்சார்கள் அல்லது கலப்பு சென்சார்கள் என அழைக்கப்படுகிறது. இவை பொதுவாக பல வன்பொருள் அடிப்படையிலான சென்சார்களிடமிருந்து தரவை இணைக்கின்றன. இந்த கட்டுரையின் முடிவில், சுழற்சி திசையன் சென்சாருடன் நாங்கள் பணியாற்றுவோம், இது சாதனத்தின் முடுக்கமானி, காந்தமாமீட்டர் மற்றும் கைரோஸ்கோப்பிலிருந்து தரவை இணைக்கும் மென்பொருள் சென்சார் ஆகும்.

சுற்றுச்சூழல் உணரிகள்: சுற்றுப்புற ஒளியை அளவிடுதல்

Android இன் ஒளி சென்சார் "லக்ஸ்" அலகுகளில் சுற்றுப்புற ஒளியை அளவிடுகிறது, இது மனித கண்ணால் உணரப்படும் ஒளியின் தீவிரம். சென்சார் மூலம் புகாரளிக்கப்பட்ட லக்ஸ் மதிப்பு சாதனங்களில் வேறுபடலாம், எனவே உங்கள் பயன்பாட்டிற்கு நிலையான மதிப்புகள் தேவைப்பட்டால், உங்கள் பயன்பாட்டில் மூல தரவைப் பயன்படுத்துவதற்கு முன்பு அதை நீங்கள் கையாள வேண்டியிருக்கலாம்.


இந்த பிரிவில், சாதனத்தின் ஒளி சென்சாரிலிருந்து தற்போதைய லக்ஸ் மதிப்பை மீட்டெடுக்கும், உரைக்காட்சியில் காண்பிக்கும், பின்னர் புதிய தரவு கிடைக்கும்போது உரைக்காட்சியைப் புதுப்பிக்கும் பயன்பாட்டை உருவாக்க உள்ளோம்.நீங்கள் இந்த தகவலை பல பயன்பாடுகளில் பயன்படுத்தலாம், எடுத்துக்காட்டாக, ஒளி சென்சாரிலிருந்து தகவல்களை இழுக்கும் ஒரு டார்ச் பயன்பாட்டை நீங்கள் உருவாக்கலாம், பின்னர் தற்போதைய ஒளி நிலைகளின் அடிப்படையில் அதன் பீமின் வலிமையை தானாக சரிசெய்கிறது.

நீங்கள் விரும்பும் அமைப்புகளுடன் புதிய Android திட்டத்தை உருவாக்கவும், தொடங்குவோம்!

உங்கள் சென்சார் தரவைக் காண்பிக்கும்

நான் ஒரு உரைக்காட்சியைச் சேர்க்கப் போகிறேன், இது ஒளி சென்சாரிலிருந்து பிரித்தெடுக்கப்பட்ட தரவைக் காண்பிக்கும். புதிய தரவு கிடைக்கும்போதெல்லாம் இந்த உரைக்காட்சி புதுப்பிக்கப்படும், எனவே பயனருக்கு எப்போதும் சமீபத்திய தகவல்களை அணுக முடியும்.

உங்கள் திட்டத்தின் activity_main.xml கோப்பைத் திறந்து பின்வருவனவற்றைச் சேர்க்கவும்:

அடுத்து, எங்கள் தளவமைப்பில் குறிப்பிடப்பட்டுள்ள “light_sensor” சரம் வளத்தை உருவாக்க வேண்டும். உங்கள் திட்டத்தின் strings.xml கோப்பைத் திறந்து பின்வருவனவற்றைச் சேர்க்கவும்:

ஒளி சென்சார்:% 1 $ .2f

“% 1 $ .2f” என்பது நாம் காண்பிக்க விரும்பும் தகவலைக் குறிப்பிடும் ஒரு ஒதுக்கிடமாகும், அது எவ்வாறு வடிவமைக்கப்பட வேண்டும்:

  • %1. ஒரே சரம் வளத்தில் பல இருப்பிடங்களை நீங்கள் செருகலாம்; “% 1” நாங்கள் ஒரு ஒதுக்கிடத்தைப் பயன்படுத்துகிறோம் என்பதைக் குறிக்கிறது.
  • $.2. உள்வரும் ஒவ்வொரு மிதக்கும் புள்ளி மதிப்பையும் எங்கள் பயன்பாடு எவ்வாறு வடிவமைக்க வேண்டும் என்பதை இது குறிப்பிடுகிறது. “$ .2” மதிப்பு இரண்டு தசம இடங்களுக்கு வட்டமிடப்பட வேண்டும் என்பதைக் குறிக்கிறது.
  • எஃப் மதிப்பை மிதக்கும் புள்ளி எண்ணாக வடிவமைக்கவும்.

சில சென்சார்கள் மற்றவர்களை விட பொதுவானவை என்றாலும், ஒவ்வொரு சாதனத்திற்கும் சரியான வன்பொருள் மற்றும் மென்பொருளை அணுகலாம் என்று நீங்கள் ஒருபோதும் கருதக்கூடாது. அண்ட்ராய்டு இயங்குதளத்தின் பிற்பகுதிகளில் சில சென்சார்கள் அறிமுகப்படுத்தப்படாததால், சென்சார் கிடைக்கும் தன்மை Android இன் வெவ்வேறு பதிப்புகளில் கூட மாறுபடும்.

Android சென்சார் கட்டமைப்பைப் பயன்படுத்தி ஒரு சாதனத்தில் ஒரு குறிப்பிட்ட சென்சார் இருக்கிறதா என்பதை நீங்கள் சரிபார்க்கலாம். சென்சார் கிடைப்பதன் அடிப்படையில் உங்கள் பயன்பாட்டின் பகுதிகளை முடக்கலாம் அல்லது இயக்கலாம் அல்லது உங்கள் பயன்பாட்டின் சில அம்சங்கள் எதிர்பார்த்தபடி செயல்படாது என்பதை விளக்கும் காட்சியைக் காண்பிக்கலாம்.

எங்கள் strings.xml கோப்பு திறந்திருக்கும் போது, ​​ஒரு “no_sensor” சரத்தை உருவாக்குவோம், இது ஒளி சென்சார் கிடைக்கவில்லை என்றால் நாங்கள் காண்பிப்போம்:

லைட் சென்சார் கிடைக்கவில்லை

ஒரு குறிப்பிட்ட சென்சாருக்கு அணுகல் இல்லாமல் உங்கள் பயன்பாடு ஒரு நல்ல பயனர் அனுபவத்தை வழங்க முடியாவிட்டால், இந்த தகவலை உங்கள் மேனிஃபெஸ்டில் சேர்க்க வேண்டும். எடுத்துக்காட்டாக, உங்கள் பயன்பாட்டிற்கு திசைகாட்டி சென்சார் அணுகல் தேவைப்பட்டால், நீங்கள் பின்வருவனவற்றைப் பயன்படுத்தலாம்:

இப்போது, ​​உங்கள் பயன்பாட்டை திசைகாட்டி சென்சார் கொண்ட சாதனங்களுக்கு மட்டுமே பதிவிறக்கம் செய்ய முடியும்.

இது உங்கள் பார்வையாளர்களைக் கட்டுப்படுத்தக்கூடும் என்றாலும், உங்கள் பயன்பாட்டை யாராவது ஒருவர் பதிவிறக்கம் செய்ய அனுமதிப்பதை விட இது மிகவும் குறைவான பாதிப்பை ஏற்படுத்தும் உத்தரவாதம் சாதனத்தின் சென்சார் உள்ளமைவு காரணமாக மோசமான அனுபவத்தைப் பெற வேண்டும்.

சென்சாருடன் தொடர்புகொள்வது: சென்சார் மேனேஜர், சென்சார் ஈவென்ட்ஸ் மற்றும் கேட்போர்

சாதனத்தின் ஒளி சென்சாருடன் தொடர்பு கொள்ள, நீங்கள் பின்வரும் படிகளை முடிக்க வேண்டும்:

1. சென்சார் மேனேஜரின் ஒரு நிகழ்வைப் பெறுங்கள்

சாதனத்தின் முழு அளவிலான சென்சார்களை அணுக உங்களுக்கு தேவையான அனைத்து முறைகளையும் சென்சார் மேனேஜர் வழங்குகிறது.

தொடங்க, சென்சார் மேனேஜரின் ஒரு நிகழ்வைக் கொண்டிருக்கும் ஒரு மாறியை உருவாக்கவும்:

தனியார் சென்சார் மேனேஜர் லைட்சென்சர் மேனேஜர்;

பின்னர், நீங்கள் Context.getSystemService முறையை அழைப்பதன் மூலமும் சூழலில் கடந்து செல்வதன் மூலமும் சென்சார் மேனேஜரின் ஒரு உதாரணத்தைப் பெற வேண்டும். SENSOR_SERVICE வாதம்:

lightSensorManager = (SensorManager) getSystemService (சூழல். SENSOR_SERVICE);

2. lightTextView க்கு குறிப்பு கிடைக்கும்

அடுத்து, எங்கள் உரைக்காட்சி பொருள்களை வைத்திருக்கும் ஒரு தனிப்பட்ட உறுப்பினர் மாறியை உருவாக்க வேண்டும், அதை எங்கள் உரைக்காட்சிக்கு ஒதுக்க வேண்டும்:

தனிப்பட்ட உரைக்காட்சி லைட் டெக்ஸ்ட்வியூ; ... ... ... lightTextView = (உரைக்காட்சி) findViewById (R.id.lightTextView);

3. தற்போதைய சாதனத்தில் சென்சார் இருக்கிறதா என்று சோதிக்கவும்

GetDefaultSensor () முறையை அழைப்பதன் மூலம் ஒரு குறிப்பிட்ட சென்சாருக்கான அணுகலைப் பெறலாம், பின்னர் அதை கேள்விக்குரிய சென்சார் மூலம் அனுப்பலாம். ஒளி சென்சாருக்கான வகை மாறிலி TYPE_LIGHT, எனவே நாம் பின்வருவனவற்றைப் பயன்படுத்த வேண்டும்:

lightSensor = lightSensorManager.getDefaultSensor (சென்சார். TYPE_LIGHT);

இந்த சாதனத்தில் சென்சார் இல்லையென்றால், getDefaultSensor () முறை பூஜ்யமாகிவிடும், மேலும் “no_sensor” சரத்தை காண்பிப்போம்:

சரம் சென்சார்_ரர் = getResources (). GetString (R.string.no_sensor); if (lightSensor == null) {lightTextView.setText (sens_error); }}

4. உங்கள் சென்சார் கேட்பவர்களை பதிவு செய்யுங்கள்

ஒவ்வொரு முறையும் ஒரு சென்சார் புதிய தரவைக் கொண்டிருக்கும்போது, ​​Android ஒரு சென்சார்எவென்ட் பொருளை உருவாக்குகிறது. இந்த சென்சார்எவென்ட் பொருளில் நிகழ்வை உருவாக்கிய சென்சார், நேர முத்திரை மற்றும் புதிய தரவு மதிப்பு ஆகியவை அடங்கும்.

ஆரம்பத்தில், ஒளி மற்றும் அருகாமையில் உள்ள சென்சார்களில் கவனம் செலுத்துவோம், அவை ஒரு தரவைத் தரும். இருப்பினும், சில சென்சார்கள் ஒவ்வொரு சென்சார் ஈவென்ட்டிற்கும் பல பரிமாண வரிசைகளை வழங்குகின்றன, இதில் சுழற்சி திசையன் சென்சார் உட்பட, இந்த கட்டுரையின் முடிவில் நாங்கள் ஆராய்வோம்.

இந்த சென்சார் எவென்ட் பொருள்களைப் பற்றி எங்கள் பயன்பாடு அறிவிக்கப்படுவதை உறுதிசெய்ய, சென்சார் மேனேஜரின் ரெஜிஸ்டர்லிஸ்டனர் () ஐப் பயன்படுத்தி அந்த குறிப்பிட்ட சென்சார் நிகழ்விற்கு ஒரு கேட்பவரை நாங்கள் பதிவு செய்ய வேண்டும்.

RegisterListener () முறை பின்வரும் வாதங்களை எடுக்கும்:

  • பயன்பாடு அல்லது செயல்பாட்டு சூழல்.
  • நீங்கள் கண்காணிக்க விரும்பும் சென்சார் வகை.
  • சென்சார் புதிய தரவை அனுப்ப வேண்டிய வீதம். அதிக விகிதம் உங்கள் பயன்பாட்டிற்கு கூடுதல் தரவை வழங்கும், ஆனால் இது அதிக கணினி வளங்களையும், குறிப்பாக பேட்டரி ஆயுளையும் பயன்படுத்தும். சாதனத்தின் பேட்டரியைப் பாதுகாக்க உதவ, உங்கள் பயன்பாட்டிற்குத் தேவையான குறைந்தபட்ச தரவை நீங்கள் கோர வேண்டும். நான் SensorManager.SENSOR_DELAY_NORMAL ஐப் பயன்படுத்தப் போகிறேன், இது ஒவ்வொரு 200,000 மைக்ரோ விநாடிகளுக்கும் (0.2 விநாடிகள்) புதிய தரவை அனுப்புகிறது.

சென்சார் கேட்பது சாதனத்தின் பேட்டரியை வடிகட்டுவதால், உங்கள் பயன்பாட்டின் பின்னணியில் இருக்கும்போது கூட, சென்சார்கள் தரவை அனுப்புவதை இது ஏற்படுத்தும் என்பதால், உங்கள் பயன்பாட்டின் onCreate () முறையில் நீங்கள் ஒருபோதும் கேட்பவர்களை பதிவு செய்யக்கூடாது.

அதற்கு பதிலாக, பயன்பாட்டின் ஆன்ஸ்டார்ட் () வாழ்க்கை சுழற்சி முறையில் உங்கள் சென்சார்களை பதிவு செய்ய வேண்டும்:

VerOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onStart () {super.onStart (); // தற்போதைய சாதனத்தில் சென்சார் கிடைத்தால் ... // if (lightSensor! = Null) {//…. பின்னர் கேட்கத் தொடங்குங்கள் // lightSensorManager.registerListener (இது, லைட்சென்சர், சென்சார் மேனேஜர். SENSOR_DELAY_NORMAL); }}

5. சென்சார்எவென்ட்லிஸ்டனர் கால்பேக்குகளை செயல்படுத்தவும்

SensorEventListener என்பது SensorManager இலிருந்து அறிவிப்புகளைப் பெறும் ஒரு இடைமுகமாகும்
புதிய தரவு கிடைக்கும்போதோ அல்லது சென்சாரின் துல்லியம் மாறும்போதோ.

முதல் படி, சென்சார் ஈவென்ட்லிஸ்டனர் இடைமுகத்தை செயல்படுத்த எங்கள் வகுப்பு கையொப்பத்தை மாற்றியமைக்கிறது:

பொது வகுப்பு மெயின் ஆக்டிவிட்டி AppCompatActivity சென்சார்எவென்ட்லிஸ்டனரை செயல்படுத்துகிறது s

பின்வரும் அழைப்பு முறைகளை நாங்கள் செயல்படுத்த வேண்டும்:

onSensorChanged ()

ஒவ்வொரு புதிய சென்சார் ஈவென்ட்டிற்கும் பதிலளிக்கும் வகையில் இந்த முறை அழைக்கப்படுகிறது.

சென்சார் தரவு பெரும்பாலும் விரைவாக மாறக்கூடும், எனவே உங்கள் பயன்பாடு வழக்கமான அடிப்படையில் onSensorChanged () முறையை அழைக்கக்கூடும். உங்கள் பயன்பாடு சீராக இயங்க உதவ, onSensorChanged () முறைக்குள் முடிந்தவரை சிறிய வேலையைச் செய்ய வேண்டும்.

Se சென்சார் மாற்றப்பட்ட (சென்சார்எவென்ட் சென்சார்எவென்ட்) பொது வெற்றிடத்தை மீறுங்கள் {// செய்ய //}

onAccuracyChanged ()

சென்சாரின் துல்லியம் மேம்பட்டால் அல்லது குறைந்துவிட்டால், அண்ட்ராய்டு onAccuracyChanged () முறையை அழைத்து, SENSOR_STATUS_UNRELIABLE அல்லது SENSOR_STATUS_ACCURACY_HIGH போன்ற புதிய துல்லிய மதிப்பைக் கொண்ட சென்சார் பொருளை அனுப்பும்.

லைட் சென்சார் துல்லியம் மாற்றங்களைப் புகாரளிக்காது, எனவே நான் ஆன்அக்யூரசி சேஞ்ச் () அழைப்பை காலியாக விடுகிறேன்:

C பொது வெற்றிடத்தை மாற்றியமைக்கவும் (சென்சார் சென்சார், எண்ணாக i) {// செய்ய //}}

6. சென்சார் மதிப்பை மீட்டெடுக்கவும்

எங்களுக்கு ஒரு புதிய மதிப்பு இருக்கும்போதெல்லாம், நாம் onSensorChanged () முறையை அழைக்க வேண்டும், மேலும் “light_sensor” சரத்தை மீட்டெடுக்க வேண்டும். நாம் சரத்தின் ஒதுக்கிட உரையை (% 1 $ .2f) மேலெழுதலாம் மற்றும் புதுப்பிக்கப்பட்ட சரத்தை எங்கள் உரைக்காட்சியின் ஒரு பகுதியாகக் காட்டலாம்:

Se சென்சார் மாற்றப்பட்ட (சென்சார்எவென்ட் சென்சார்எவென்ட்) பொது வெற்றிடத்தை மீறுங்கள் {// சென்சாரின் தற்போதைய மதிப்பு // மிதவை நடப்பு மதிப்பு = சென்சார்எவென்ட்.வல்யூக்கள்; // “light_sensor” சரத்தை மீட்டெடுக்கவும், புதிய மதிப்பைச் செருகவும் பயனருக்கு காண்பிக்கவும் // lightTextView.setText (getResources (). GetString (R.string.light_sensor, currentValue)); }

7. உங்கள் கேட்போரை பதிவு செய்யாதீர்கள்

சென்சார்கள் ஒரு சிறிய நேரத்தில் அதிக அளவு தரவை உருவாக்க முடியும், எனவே சாதனத்தின் வளங்களை பாதுகாக்க உதவுவதற்காக, உங்கள் கேட்பவர்களுக்கு இனி தேவைப்படாதபோது அவற்றை பதிவு செய்ய வேண்டியிருக்கும்.

உங்கள் பயன்பாடு பின்னணியில் இருக்கும்போது சென்சார் நிகழ்வுகளைக் கேட்பதை நிறுத்த, உங்கள் திட்டத்தின் ஆன்ஸ்டாப் () வாழ்க்கை சுழற்சி முறைக்கு பதிவுசெய்யப்படாத பட்டியலை () சேர்க்கவும்:

VerOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onStop () {super.onStop (); lightSensorManager.unregisterListener (இந்த); }

Android 7.0 இல் உள்ளதைப் போல உங்கள் கேட்போரை onPause () இல் பதிவு செய்யக்கூடாது என்பதை நினைவில் கொள்க, மேலும் உயர் பயன்பாடுகள் பிளவு-திரை மற்றும் பட-இன்-பிக்சர் பயன்முறையில் இயங்கக்கூடும், அங்கு அவை இடைநிறுத்தப்பட்ட நிலையில் உள்ளன, ஆனால் அவை திரையில் தெரியும்.

Android இன் ஒளி சென்சார்களைப் பயன்படுத்துதல்: முடிக்கப்பட்ட குறியீடு

மேலே உள்ள அனைத்து படிகளையும் முடித்த பிறகு, உங்கள் திட்டத்தின் முதன்மை செயல்பாடு இதுபோன்றதாக இருக்க வேண்டும்:

android.support.v7.app.AppCompatActivity ஐ இறக்குமதி செய்க; android.os.Bundle ஐ இறக்குமதி செய்க; android.content.Context ஐ இறக்குமதி செய்க; android.hardware.Sensor ஐ இறக்குமதி செய்க; android.hardware.SensorEvent ஐ இறக்குமதி செய்க; android.hardware.SensorEventListener ஐ இறக்குமதி செய்க; android.hardware.SensorManager ஐ இறக்குமதி செய்க; android.widget.TextView ஐ இறக்குமதி செய்க; பொது வகுப்பு மெயின்ஆக்டிவிட்டி AppCompatActivity ஐ விரிவுபடுத்துகிறது // சென்சார்எவென்ட்லிஸ்டனர் இடைமுகத்தை செயல்படுத்துகிறது // சென்சார்எவென்ட்லிஸ்டனர் {// உங்கள் மாறிகள் உருவாக்கவும் // தனியார் சென்சார் லைட்சென்சர்; தனியார் சென்சார் மேனேஜர் லைட்சென்சர் மேனேஜர்; தனிப்பட்ட உரைக்காட்சி லைட் டெக்ஸ்ட்வியூ; VerOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); lightTextView = (உரைக்காட்சி) findViewById (R.id.lightTextView); // SensorManager இன் ஒரு உதாரணத்தைப் பெறுங்கள் // lightSensorManager = (SensorManager) getSystemService (Context.SENSOR_SERVICE); // லைட் சென்சார் சரிபார்க்கவும் // lightSensor = lightSensorManager.getDefaultSensor (Sensor.TYPE_LIGHT); // ஒளி சென்சார் இல்லை என்றால், பிழையைக் காண்பி // சரம் சென்சார்_ரர் = getResources (). GetString (R.string.no_sensor); if (lightSensor == null) {lightTextView.setText (sens_error); St ver verOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onStart () {super.onStart (); // தற்போதைய சாதனத்தில் சென்சார் கிடைத்தால் ... // if (lightSensor! = Null) {//…. பின்னர் ஒரு கேட்பவரைப் பதிவுசெய்க // lightSensorManager.registerListener (இது, லைட்சென்சர், // நீங்கள் எவ்வளவு அடிக்கடி விரும்புகிறீர்கள் என்பதைக் குறிப்பிடவும் புதிய தரவைப் பெறுக // SensorManager.SENSOR_DELAY_NORMAL); St ver verOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onStop () {super.onStop (); // உங்கள் கேட்பவரை பதிவுநீக்குங்கள் // lightSensorManager.unregisterListener (இது); Sens சென்சார் மாற்றப்பட்ட (சென்சார்எவென்ட் சென்சார்எவென்ட்) பொது வெற்றிடத்தை மீறுங்கள் {// சென்சாரின் தற்போதைய மதிப்பு // மிதவை நடப்பு மதிப்பு = சென்சார்எவென்ட்.வல்யூக்கள்; // “light_sensor” சரத்தை மீட்டெடுக்கவும், புதிய மதிப்பைச் செருகவும் மற்றும் உரைக்காட்சியைப் புதுப்பிக்கவும் // lightTextView.setText (getResources (). GetString (R.string.light_sensor, currentValue)); Ver ver ஓவர்ரைடு // சென்சாரின் துல்லியம் மாறினால்… .// பொது வெற்றிடம் onAccuracyChanged (சென்சார் சென்சார், int i) TO // TO // //}

உங்கள் பூர்த்தி செய்யப்பட்ட Android சென்சார் பயன்பாட்டை சோதிக்கவும்

இயல்பான Android ஸ்மார்ட்போன் அல்லது டேப்லெட்டில் இந்த பயன்பாட்டை சோதிக்க:

  • உங்கள் சாதனத்தில் திட்டத்தை நிறுவவும் (Android ஸ்டுடியோ கருவிப்பட்டியிலிருந்து “இயக்கு> இயக்கு” ​​என்பதைத் தேர்ந்தெடுப்பதன் மூலம்).
  • இது சாதனங்களுக்கு இடையில் மாறுபடும் என்றாலும், ஒளி சென்சார் பெரும்பாலும் திரையின் மேல் வலதுபுறத்தில் அமைந்துள்ளது. ஒளி நிலைகளைக் கையாள, உங்கள் சாதனத்தை நெருக்கமாக நகர்த்தவும், பின்னர் ஒரு ஒளி மூலத்திலிருந்து மேலும் விலகிச் செல்லவும். மாற்றாக, ஒளியைத் தடுக்க, சாதனத்தை உங்கள் கையால் மறைக்க முயற்சி செய்யலாம். கிடைக்கக்கூடிய ஒளியின் அளவைப் பொறுத்து “லைட் சென்சார்” மதிப்பு அதிகரிக்கவும் குறைக்கவும் வேண்டும்.

நீங்கள் Android மெய்நிகர் சாதனத்தை (AVD) பயன்படுத்துகிறீர்கள் என்றால், பல்வேறு சென்சார் நிகழ்வுகளை உருவகப்படுத்த நீங்கள் பயன்படுத்தக்கூடிய மெய்நிகர் சென்சார் கட்டுப்பாடுகளின் தொகுப்பை முன்மாதிரி கொண்டுள்ளது. முன்மாதிரியின் “விரிவாக்கப்பட்ட கட்டுப்பாடுகள்” சாளரம் வழியாக இந்த மெய்நிகர் சென்சார் கட்டுப்பாடுகளை நீங்கள் அணுகலாம்:

  • உங்கள் AVD இல் பயன்பாட்டை நிறுவவும்.
  • AVD உடன், நீங்கள் ஒரு பொத்தானைக் காண்பீர்கள். மூன்று புள்ளிகள் கொண்ட “மேலும்” பொத்தானைக் கண்டுபிடி (கர்சர் பின்வரும் ஸ்கிரீன்ஷாட்டில் வைக்கப்பட்டுள்ள இடத்தில்) அதைக் கிளிக் செய்யவும். இது “விரிவாக்கப்பட்ட கட்டுப்பாடுகள்” சாளரத்தைத் தொடங்குகிறது.

  • இடது கை மெனுவில், “மெய்நிகர் சென்சார்கள்” என்பதைத் தேர்ந்தெடுக்கவும்.
  • “கூடுதல் சென்சார்கள்” தாவலைத் தேர்ந்தெடுக்கவும். இந்த தாவலில் வெவ்வேறு நிலை மற்றும் சுற்றுச்சூழல் சென்சார் நிகழ்வுகளை உருவகப்படுத்த நீங்கள் பயன்படுத்தக்கூடிய பல்வேறு ஸ்லைடர்கள் உள்ளன.

  • உருவகப்படுத்தப்பட்ட ஒளி நிலைகளை மாற்ற “ஒளி (லக்ஸ்)” ஸ்லைடரைக் கண்டுபிடித்து இடது மற்றும் வலது பக்கம் இழுக்கவும். உங்கள் பயன்பாடு இந்த மாறும் மதிப்புகளை உண்மையான நேரத்தில் காண்பிக்க வேண்டும்.

பூர்த்தி செய்யப்பட்ட திட்டத்தை கிட்ஹப்பிலிருந்து பதிவிறக்கம் செய்யலாம்.

Android இன் அருகாமையில் உள்ள சென்சார்கள் மூலம் தூரத்தை அளவிடுகிறது

சுற்றுச்சூழல் சென்சாரிலிருந்து தகவல்களை எவ்வாறு மீட்டெடுப்பது என்பதை இப்போது பார்த்தோம், இந்த அறிவை நீங்கள் எவ்வாறு பயன்படுத்துவீர்கள் என்பதைப் பார்ப்போம் நிலையை சென்சார்.

இந்த பிரிவில், உங்கள் ஸ்மார்ட்போன் அல்லது டேப்லெட் மற்றும் பிற பொருள்களுக்கு இடையிலான தூரத்தை கண்காணிக்க சாதனத்தின் அருகாமையில் உள்ள சென்சார் பயன்படுத்துவோம். உங்கள் பயன்பாட்டில் ஏதேனும் குரல் செயல்பாடு இருந்தால், பயனரின் காதுக்கு ஸ்மார்ட்போன் எப்போது வைக்கப்படுகிறது என்பதை தீர்மானிக்க அருகாமையில் உள்ள சென்சார் உங்களுக்கு உதவக்கூடும், எடுத்துக்காட்டாக அவர்கள் தொலைபேசி உரையாடலைக் கொண்டிருக்கும்போது. தொடு நிகழ்வுகளை முடக்க நீங்கள் இந்த தகவலைப் பயன்படுத்தலாம், எனவே பயனர் தற்செயலாக செயலிழக்கவோ அல்லது பிற தேவையற்ற நிகழ்வுகளை உரையாடலுக்குத் தூண்டவோ கூடாது.

பயனர் இடைமுகத்தை உருவாக்குதல்

நான் அருகாமையில் உள்ள தரவை திரையில் காண்பிக்கப் போகிறேன், எனவே நீங்கள் அதை உண்மையான நேரத்தில் புதுப்பிப்பதைக் காணலாம். விஷயங்களை எளிமையாக வைத்திருக்க உதவ, எங்கள் முந்தைய பயன்பாட்டிலிருந்து தளவமைப்பின் பெரும்பகுதியை மீண்டும் பயன்படுத்தலாம்:

அடுத்து, உங்கள் strings.xml கோப்பைத் திறந்து “proximity_sensor” சரத்தை உருவாக்கவும். மீண்டும், இந்த சரம் ஒரு ஒதுக்கிடத்தைக் கொண்டிருக்க வேண்டும், இது இறுதியில் அருகாமையில் உள்ள சென்சாரிலிருந்து பிரித்தெடுக்கப்பட்ட தரவுகளால் நிறைந்திருக்கும்:

ProximitySensor அருகாமையில் சென்சார்:% 1 $ .2f அருகாமையில் சென்சார் கிடைக்கவில்லை

அருகாமையில் உள்ள சென்சாரிலிருந்து தரவைப் பெறுதல்

லைட் சென்சார் போலவே, Android இன் அருகாமையில் உள்ள சென்சார் ஒரு தரவு மதிப்பை வழங்குகிறது, அதாவது எங்கள் முந்தைய பயன்பாட்டிலிருந்து அதிகமான குறியீட்டை மீண்டும் பயன்படுத்தலாம். இருப்பினும், சில பெரிய வேறுபாடுகள் உள்ளன, மேலும் இந்த குறியீட்டைப் பின்பற்றுவதை எளிதாக்கும் பெயர் தொடர்பான சில மாற்றங்கள்:

  • சென்சார் மேனேஜரின் ஒரு நிகழ்வை உருவாக்கவும், இந்த நேரத்தில் நான் “ப்ராக்ஸிமிட்டி சென்சார் மேனேஜர்” என்று பெயரிடப் போகிறேன்.
  • “ப்ராக்ஸிமிட்டி சென்சார் மேனேஜர்” இன் உதாரணத்தைப் பெறுங்கள்.
  • “ப்ராக்ஸிமிட்டி டெக்ஸ்ட்வியூ” க்கு ஒரு குறிப்பை உருவாக்கவும்.
  • GetDefaultSensor () முறையை அழைக்கவும், அதை TYPE_PROXIMITY சென்சார் அனுப்பவும்.
  • அருகாமையில் உள்ள சென்சாருக்கு கேட்பவர்களை பதிவுசெய்து பதிவுசெய்யவும்.

இந்த மாற்றங்களைச் செய்த பிறகு, நீங்கள் பின்வருவனவற்றை முடிக்க வேண்டும்:

android.support.v7.app.AppCompatActivity ஐ இறக்குமதி செய்க; android.os.Bundle ஐ இறக்குமதி செய்க; android.content.Context ஐ இறக்குமதி செய்க; android.hardware.Sensor ஐ இறக்குமதி செய்க; android.hardware.SensorEvent ஐ இறக்குமதி செய்க; android.hardware.SensorManager ஐ இறக்குமதி செய்க; android.hardware.SensorEventListener ஐ இறக்குமதி செய்க; android.widget.TextView ஐ இறக்குமதி செய்க; பொது வகுப்பு மெயின்ஆக்டிவிட்டி AppCompatActivity ஐ நீட்டிக்கிறது // சென்சார்எவென்ட்லிஸ்டனர் இடைமுகத்தை செயல்படுத்துகிறது // சென்சார்எவென்ட்லிஸ்டனர் {// உங்கள் மாறிகளை உருவாக்குங்கள் // தனியார் சென்சார் ப்ராக்ஸிமிட்டிசென்சர்; தனியார் சென்சார் மேனேஜர் அருகாமையில் சென்சார் மேனேஜர்; தனிப்பட்ட உரைக்காட்சி அருகாமையில் உரைக்காட்சி; VerOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); proximityTextView = (உரைக்காட்சி) findViewById (R.id.proximityTextView); // சென்சார் மேனேஜரின் ஒரு உதாரணத்தைப் பெறுங்கள் // அருகாமையில் சென்சார் மேனேஜர் = (சென்சார் மேனேஜர்) getSystemService (சூழல். SENSOR_SERVICE); // ப்ராக்ஸிமிட்டி சென்சார் சரிபார்க்கவும் // ப்ராக்ஸிமிட்டிசென்சர் = ப்ராக்ஸிமிட்டிசென்சர்மேனேஜர்.ஜெட் டிஃபால்ட் சென்சார் (சென்சார். TYPE_PROXIMITY); // ப்ராக்ஸிமிட்டி சென்சார் இல்லை என்றால், ஒரு பிழையைக் காண்பி // சரம் சென்சார்_ரர் = getResources (). GetString (R.string.no_sensor); if (proximitySensor == null) {proximityTextView.setText (sens_error); St ver verOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onStart () {super.onStart (); // தற்போதைய சாதனத்தில் சென்சார் கிடைத்தால் ... // if (ப்ராக்ஸிமிட்டிசென்சர்! = பூஜ்யம்) {//…. பின்னர் ஒரு கேட்பவரைப் பதிவுசெய்க // ப்ராக்ஸிமிட்டிசென்சர்மேனேஜர். புதிய தரவைப் பெறுக // SensorManager.SENSOR_DELAY_NORMAL); St ver verOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onStop () {super.onStop (); // கணினி வளங்களை பாதுகாக்க உங்கள் கேட்பவரை பதிவு செய்யாதீர்கள் // அருகாமையில் சென்சார் மேனேஜர்.அன்ரிஜிஸ்டர்லிஸ்டனர் (இது); Sens சென்சார் மாற்றப்பட்ட (சென்சார்எவென்ட் சென்சார்எவென்ட்) பொது வெற்றிடத்தை மீறுங்கள் {// சென்சாரின் தற்போதைய மதிப்பு // மிதவை நடப்பு மதிப்பு = சென்சார்எவென்ட்.வல்யூக்கள்; // “ப்ராக்ஸிமிட்டி_சென்சர்” சரத்தை மீட்டெடுக்கவும், புதிய மதிப்பைச் செருகவும் மற்றும் உரைக்காட்சியைப் புதுப்பிக்கவும் // proximityTextView.setText (getResources (). GetString (R.string.proximity_sensor, currentValue)); Ver ver ஓவர்ரைடு // சென்சாரின் துல்லியம் மாறினால்… .// பொது வெற்றிடம் onAccuracyChanged (சென்சார் சென்சார், int i) {//...TO DO //}}

சோதனை: பயனர் தங்கள் சாதனத்திற்கு எவ்வளவு நெருக்கமானவர்?

இயல்பான ஆண்ட்ராய்டு ஸ்மார்ட்போன் அல்லது டேப்லெட்டில் இந்த பயன்பாட்டைச் சோதிக்க, பயன்பாட்டை உங்கள் சாதனத்தில் நிறுவவும், பின்னர் உங்கள் கையை திரையை நோக்கி நகர்த்துவதன் மூலம் பரிசோதனை செய்து, பின்னர் அதை மீண்டும் நகர்த்தவும். “ப்ராக்ஸிமிட்டி சென்சார்” மதிப்பு உங்கள் இயக்கங்களை பதிவு செய்ய வேண்டும்.

சாதனங்களுக்கு இடையில் அருகாமையில் உள்ள சென்சார்கள் மாறுபடும் என்பதை அறிந்து கொள்ளுங்கள். சில சாதனங்கள் இரண்டு அருகாமையில் உள்ள மதிப்புகளை மட்டுமே காண்பிக்கக்கூடும் - ஒன்று “அருகில்” என்பதைக் குறிக்கவும், ஒன்று “தூர” என்பதைக் குறிக்கவும் - எனவே உங்கள் இயல்பான Android சாதனத்தில் பல வகைகளைக் காணவில்லை என்றால் ஆச்சரியப்பட வேண்டாம்.

எமுலேட்டரில் இந்த பயன்பாட்டை சோதிக்க:

  • உங்கள் பயன்பாட்டை ஒரு AVD இல் நிறுவவும்.
  • மூன்று புள்ளிகள் கொண்ட “மேலும்” பொத்தானைக் கண்டுபிடித்து, அதைக் கிளிக் செய்யவும், இது “விரிவாக்கப்பட்ட கட்டுப்பாடுகள்” சாளரத்தைத் தொடங்குகிறது.
  • சாளரத்தின் இடது கை மெனுவில், “மெய்நிகர் சென்சார்கள்” என்பதைத் தேர்ந்தெடுக்கவும்.
  • “கூடுதல் சென்சார்கள்” தாவலைத் தேர்ந்தெடுக்கவும்.
  • “அருகாமையில்” ஸ்லைடரைக் கண்டுபிடித்து, சாதனத்திற்கு நெருக்கமாக நகரும் ஒரு பொருளைப் பின்பற்ற அதை இடது மற்றும் வலது பக்கம் இழுக்கவும், பின்னர் மேலும் தொலைவில். நீங்கள் ஸ்லைடரைக் கையாளும்போது “ப்ராக்ஸிமிட்டி சென்சார்” மதிப்புகள் மாற வேண்டும்.

பூர்த்தி செய்யப்பட்ட திட்டத்தை கிட்ஹப்பிலிருந்து பதிவிறக்கம் செய்யலாம்.

மோஷன் சென்சார்கள்: பல பரிமாண வரிசைகளை செயலாக்குதல்

இந்த கட்டம் வரை, ஒரு உருப்படி தரவை வழங்கும் சென்சார்களில் நாங்கள் கவனம் செலுத்தியுள்ளோம், ஆனால் ஒவ்வொரு சென்சார் எவென்ட்டுக்கும் பல பரிமாண வரிசைகளை வழங்கும் சில சென்சார்கள் உள்ளன. இந்த பல பரிமாண சென்சார்களில் இயக்க உணரிகள் உள்ளன, அவை இந்த இறுதிப் பிரிவில் நாம் கவனம் செலுத்துகிறோம்.

மோஷன் சென்சார்கள் உங்களுக்கு உதவக்கூடும்:

  • பயனர் உள்ளீட்டின் மாற்று முறையை வழங்கவும். எடுத்துக்காட்டாக, நீங்கள் ஒரு மொபைல் விளையாட்டை உருவாக்கினால், பயனர் தங்கள் சாதனத்தை சாய்த்து திரையில் சுற்றி நகர்த்தலாம்.
  • பயனர் செயல்பாட்டைக் கண்டறியவும். நீங்கள் ஒரு செயல்பாடு-கண்காணிப்பு பயன்பாட்டை உருவாக்கியிருந்தால், பயனர் ஒரு காரில் பயணம் செய்கிறாரா, ஜாகிங் செய்கிறாரா, அல்லது அவர்களின் மேசையில் உட்கார்ந்திருக்கிறாரா என்பதை அறிய மோஷன் சென்சார்கள் உங்களுக்கு உதவக்கூடும்.
  • நோக்குநிலையை இன்னும் துல்லியமாக தீர்மானிக்கவும்.சாதனத்தின் இயக்கம் சென்சார்களிடமிருந்து ஆயங்களை பிரித்தெடுக்க முடியும், பின்னர் அவற்றை பூமியின் ஒருங்கிணைப்பு அமைப்பின் அடிப்படையில் மொழிபெயர்க்கலாம், சாதனத்தின் தற்போதைய நோக்குநிலை குறித்த மிகத் துல்லியமான நுண்ணறிவைப் பெறலாம்.

இந்த இறுதி பிரிவில், நாங்கள் சுழற்சி திசையன் சென்சார் (TYPE_ROTATION_VECTOR) ஐப் பயன்படுத்துவோம். ஒளி மற்றும் அருகாமையில் உள்ள சென்சார்களைப் போலன்றி, இது ஒரு மென்பொருள் சென்சார் ஆகும், இது சாதனத்தின் முடுக்கமானி, காந்தமாமீட்டர் மற்றும் கைரோஸ்கோப் சென்சார்களிடமிருந்து தரவை ஒருங்கிணைக்கிறது. இந்த சென்சாருடன் பணிபுரிய நீங்கள் பெரும்பாலும் கணித மாற்றங்கள் மற்றும் மாற்றங்களைச் செய்ய வேண்டியிருந்தாலும், இது சாதனத்தைப் பற்றிய மிகத் துல்லியமான தகவல்களையும் உங்களுக்கு வழங்க முடியும்.

அளவிட சுழற்சி திசையன் சென்சார் பயன்படுத்தும் பயன்பாட்டை நாங்கள் உருவாக்குவோம்:

  • பிட்ச். இது சாதனத்தின் மேல்-கீழ் சாய்வாகும்.
  • ரோல். இது சாதனத்தின் இடமிருந்து வலமாக சாய்ந்தது.

நிகழ்நேர சுருதி மற்றும் ரோல் தரவைக் காண்பிக்கும்

நாங்கள் இரண்டு அளவீடுகளை அளவிடுவதால், இரண்டு உரைக்காட்சிகள் மற்றும் இரண்டு தொடர்புடைய சரம் வளங்களை உருவாக்க வேண்டும்:

String.xml கோப்பைத் திறந்து, பின்வருவனவற்றைச் சேர்க்கவும்:

MotionSensors சுருதி சென்சார்:% 1 $ .2f ரோல் சென்சார்:% 1 $ .2f மோஷன் சென்சார் கிடைக்கவில்லை

உங்கள் பயன்பாட்டில் சுழற்சி திசையன் சென்சார் பயன்படுத்துதல்

எங்கள் முந்தைய பயன்பாடுகளிலிருந்து சில குறியீட்டை நாங்கள் மீண்டும் பயன்படுத்துவோம், எனவே சுழற்சி திசையன் சென்சாருடன் தொடர்புகொள்வது, நாம் முன்பு பார்த்ததை விட கணிசமாக வேறுபட்டது.

1. TYPE_ROTATION_VECTOR ஐப் பயன்படுத்தவும்

நாங்கள் சுழற்சி திசையன் சென்சாருடன் பணிபுரிவதால், நாம் getDefaultSensor () முறையை அழைக்க வேண்டும், பின்னர் அதை TYPE_ROTATION_VECTOR மாறிலி அனுப்ப வேண்டும்:

positionSensorManager.getDefaultSensor (Sensor.TYPE_ROTATION_VECTOR);

2. சென்சார் தரவை மொழிபெயர்க்கவும்

முந்தைய ஒளி மற்றும் அருகாமையில் உள்ள சென்சார்களைப் போலன்றி, இயக்க சென்சார்கள் ஒவ்வொரு சென்சார் எவென்ட்டுக்கும் சென்சார் மதிப்புகளின் பல பரிமாண வரிசைகளைத் தருகின்றன. இந்த மதிப்புகள் நிலையான “எக்ஸ், ஒய், இசட்” ஒருங்கிணைப்பு முறையைப் பயன்படுத்தி வடிவமைக்கப்பட்டுள்ளன, இது சாதனத்தின் இயல்புநிலை, “இயற்கை” நோக்குநிலையில் இருக்கும்போது அதை ஒப்பிடும்போது கணக்கிடப்படுகிறது.

சாதனத்தின் தற்போதைய நோக்குநிலையுடன் பொருந்த இந்த ஆண்ட்ராய்டு இந்த எக்ஸ், ஒய் மற்றும் இசட் ஆயங்களை மாற்றாது, எனவே சாதனம் உருவப்படம் அல்லது இயற்கை பயன்முறையில் இருந்தாலும் “எக்ஸ்” அச்சு ஒரே மாதிரியாக இருக்கும். சுழற்சி திசையன் சென்சார் பயன்படுத்தும் போது, ​​சாதனத்தின் தற்போதைய சுழற்சியுடன் பொருந்துமாறு உள்வரும் தரவை மாற்ற வேண்டியிருக்கும்.

உருவப்படம் பெரும்பாலான ஸ்மார்ட்போன்களுக்கான இயல்புநிலை நோக்குநிலையாகும், ஆனால் இது அவ்வாறு இருக்கும் என்று நீங்கள் கருதக்கூடாது அனைத்து Android சாதனங்கள், குறிப்பாக டேப்லெட்டுகள். இந்த கட்டுரையில், சென்சார் தரவை அதன் அசலில் இருந்து மொழிபெயர்க்க ஒரு சுழற்சி மேட்ரிக்ஸைப் பயன்படுத்துவோம், சாதனம் ஒருங்கிணைப்பு அமைப்பு, க்கு பூமியின் ஒருங்கிணைப்பு அமைப்பு, இது பூமியுடன் தொடர்புடைய சாதனத்தின் இயக்கம் மற்றும் நிலையை குறிக்கிறது. தேவைப்பட்டால், சாதனத்தின் தற்போதைய நோக்குநிலையின் அடிப்படையில் சென்சார் தரவை மீண்டும் உருவாக்கலாம்.

முதலாவதாக, சாதன ஒருங்கிணைப்பு அமைப்பு ஒரு நிலையான 3-அச்சு எக்ஸ், ஒய், இசட் ஒருங்கிணைப்பு அமைப்பு ஆகும், அங்கு மூன்று அச்சுகளில் ஒவ்வொன்றிலும் ஒவ்வொரு புள்ளியும் ஒரு 3D திசையன் மூலம் குறிக்கப்படுகிறது. இதன் பொருள் நாம் 9 மிதவை மதிப்புகளின் வரிசையை உருவாக்க வேண்டும்:

float rotationMatrix = புதிய மிதவை;

இந்த வரிசையை நாம் getRotationMatrix () முறைக்கு அனுப்பலாம்:

SensorManager.getRotationMatrixFromVector (rotationMatrix, vectors); int worldAxisX = SensorManager.AXIS_X; int worldAxisZ = SensorManager.AXIS_Z;

அடுத்த கட்டமாக, சாதனத்தின் தற்போதைய நோக்குநிலையின் அடிப்படையில் சென்சார் தரவை மறுவடிவமைக்க SensorManager.remapCoordinateSystem () முறையைப் பயன்படுத்துகிறது.

SensorManager.remapCoordinateSystem () முறை பின்வரும் வாதங்களை எடுக்கிறது:

  • அசல் சுழற்சி அணி.
  • நீங்கள் மாற்றியமைக்க விரும்பும் அச்சுகள்.
  • இந்த புதிய தரவைக் கொண்டு நீங்கள் பிரபலப்படுத்தும் வரிசை.

எனது பயன்பாட்டில் நான் பயன்படுத்தும் குறியீடு இங்கே:

float adjustedRotationMatrix = புதிய மிதவை; SensorManager.remapCoordinateSystem (rotationMatrix, worldAxisX, worldAxisZ, சரிசெய்யப்பட்ட RotationMatrix);

இறுதியாக, நாங்கள் SensorManager.getOrientation ஐ அழைத்து, சரிசெய்யப்பட்ட RotationMatrix ஐப் பயன்படுத்தச் சொல்வோம்:

SensorManager.getOrientation (சரிசெய்யப்பட்ட ரோட்டேஷன் மேட்ரிக்ஸ், நோக்குநிலை);

3. ஒதுக்கிட சரங்களை புதுப்பிக்கவும்

எங்களிடம் இரண்டு செட் தரவு (பிட்ச் மற்றும் ரோல்) இருப்பதால், நாம் இரண்டு தனித்தனி ஒதுக்கிட சரங்களை மீட்டெடுக்க வேண்டும், அவற்றை சரியான மதிப்புகளுடன் விரிவுபடுத்த வேண்டும், பின்னர் தொடர்புடைய உரைக்காட்சியைப் புதுப்பிக்க வேண்டும்:

pitTextView.setText (getResources (). getString (R.string.pitch_sensor, pit)); rollTextView.setText (getResources (). getString (R.string.roll_sensor, roll));

பல சென்சார் தரவைக் காண்பித்தல்: பூர்த்தி செய்யப்பட்ட குறியீடு

மேலே உள்ள படிகளைச் செய்தபின், உங்கள் மெயின் ஆக்டிவிட்டி இதுபோன்றதாக இருக்க வேண்டும்:

android.app.Activity; android.os.Bundle ஐ இறக்குமதி செய்க; android.hardware.Sensor ஐ இறக்குமதி செய்க; android.hardware.SensorEvent ஐ இறக்குமதி செய்க; android.hardware.SensorEventListener ஐ இறக்குமதி செய்க; android.hardware.SensorManager ஐ இறக்குமதி செய்க; android.widget.TextView ஐ இறக்குமதி செய்க; பொது வகுப்பு மெயின் ஆக்டிவிட்டி செயல்பாட்டை விரிவுபடுத்துகிறது சென்சார் ஈவென்ட்லிஸ்டனர் {தனியார் சென்சார் மேனேஜர் மோஷன்சென்சர் மேனேஜர்; தனியார் சென்சார் மோஷன் சென்சார்; தனிப்பட்ட உரைக்காட்சி பிட்ச் டெக்ஸ்ட்வியூ; தனிப்பட்ட உரைக்காட்சி ரோல்டெக்ஸ்ட் வியூ; தனிப்பட்ட நிலையான இறுதி எண்ணாக SENSOR_DELAY = 500 * 1000; தனிப்பட்ட நிலையான இறுதி எண்ணாக FROM_RADS_TO_DEGS = -57; VerOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); pitTextView = (உரைக்காட்சி) findViewById (R.id.pitchTextView); rollTextView = (உரைக்காட்சி) findViewById (R.id.rollTextView); முயற்சிக்கவும் {motionSensorManager = (SensorManager) getSystemService (செயல்பாடு. SENSOR_SERVICE); motionSensor = motionSensorManager.getDefaultSensor (சென்சார். TYPE_ROTATION_VECTOR); motionSensorManager.registerListener (இது, மோஷன்சென்சர், SENSOR_DELAY); } பிடிக்கவும் (விதிவிலக்கு இ) {பிட்செக்ஸ்ட் வியூ.செட் டெக்ஸ்ட் (ஆர். ஸ்ட்ரிங்.னோ_சென்சர்); rollTextView.setText (R.string.no_sensor); Ac} ac பொது வெற்றிடத்தை மாற்றியமைத்தல் (சென்சார் சென்சார், எண்ணின் துல்லியம்) {// செய்ய //} சென்சார் மாற்றப்பட்ட (சென்சார் நிகழ்வு நிகழ்வு) {if (event.sensor == motionSensor) {if (event.sensor == motionSensor) {புதுப்பித்தல் (event.values); v} தனியார் வெற்றிட புதுப்பிப்பு (மிதவை திசையன்கள்) {// சுழற்சி மேட்ரிக்ஸைக் கணக்கிடுங்கள் // மிதவை சுழற்சி மேட்ரிக்ஸ் = புதிய மிதவை; SensorManager.getRotationMatrixFromVector (rotationMatrix, vectors); int worldAxisX = SensorManager.AXIS_X; int worldAxisZ = SensorManager.AXIS_Z; // செயல்பாட்டின் தற்போதைய நோக்குநிலையின் அடிப்படையில் மேட்ரிக்ஸை மாற்றியமைக்கவும் // மிதவை சரிசெய்யப்பட்ட ரோட்டேஷன் மேட்ரிக்ஸ் = புதிய மிதவை; SensorManager.remapCoordinateSystem (rotationMatrix, worldAxisX, worldAxisZ, சரிசெய்யப்பட்ட RotationMatrix); // சாதனங்களின் நோக்குநிலையை கணக்கிடுங்கள் // மிதவை நோக்குநிலை = புதிய மிதவை; // getOrientation () முறைக்கு மிதவை மதிப்புகளின் வரிசையை வழங்கவும் // SensorManager.getOrientation (சரிசெய்யப்பட்ட ரோட்டேஷன் மேட்ரிக்ஸ், நோக்குநிலை); மிதவை சுருதி = நோக்குநிலை * FROM_RADS_TO_DEGS; மிதவை ரோல் = நோக்குநிலை * FROM_RADS_TO_DEGS; // பிட்ச் மற்றும் ரோல் மதிப்புகளுடன் உரைக்காட்சிகளைப் புதுப்பிக்கவும் // பிட்ச் டெக்ஸ்ட்வியூ.செட் டெக்ஸ்ட் (getResources (). rollTextView.setText (getResources (). getString (R.string.roll_sensor, roll)); }}

பூர்த்தி செய்யப்பட்ட திட்டத்தை கிட்ஹப்பிலிருந்து பதிவிறக்கம் செய்யலாம்.

எங்கள் இறுதி Android சென்சார் பயன்பாட்டை சோதிக்கிறது

இந்த சுழற்சி திசையன் Android சென்சார் பயன்பாட்டை இயற்பியல் Android ஸ்மார்ட்போன் அல்லது டேப்லெட்டில் சோதிக்க:

  • உங்கள் சாதனத்தில் பயன்பாட்டை நிறுவவும்.
  • உங்கள் ஸ்மார்ட்போன் அல்லது டேப்லெட்டை ஒரு தட்டையான மேற்பரப்பில் வைக்கவும். மோஷன் சென்சார்கள் மிகவும் உணர்திறன் கொண்டவை என்பதை நினைவில் கொள்க, எனவே சுருதி மற்றும் ரோல் மதிப்புகளில் ஏற்ற இறக்கங்களைப் புகாரளிப்பது அசைவற்ற சாதனம் அசாதாரணமானது அல்ல.
  • சுருதியைச் சோதிக்க, உங்கள் சாதனத்தின் அடிப்பகுதியை உயர்த்துங்கள், இதனால் அது உங்களிடமிருந்து விலகிச் செல்கிறது. சுருதி மதிப்பு வியத்தகு முறையில் மாற வேண்டும்.
  • ரோலைச் சோதிக்க, உங்கள் சாதனத்தின் இடது புறத்தைத் தூக்க முயற்சிக்கவும், எனவே அது இடதுபுறமாக சாய்ந்து கொண்டிருக்கிறது - அந்த ரோல் மதிப்பைக் கவனியுங்கள்!

உங்கள் திட்டத்தை எமுலேட்டரில் சோதிக்கிறீர்கள் என்றால்:

  • உங்கள் AVD இல் பயன்பாட்டை நிறுவவும்.
  • “விரிவாக்கப்பட்ட கட்டுப்பாடுகள்” சாளரத்தைத் தொடங்கும் “மேலும்” என்பதைத் தேர்ந்தெடுக்கவும்.
  • இடது கை மெனுவில், “மெய்நிகர் சென்சார்கள்” என்பதைத் தேர்ந்தெடுக்கவும்.
  • “முடுக்கமானி” தாவல் தேர்ந்தெடுக்கப்பட்டிருப்பதை உறுதிசெய்க. இந்த தாவலில் சாதனத்தின் நிலை மற்றும் நோக்குநிலையின் மாற்றங்களை உருவகப்படுத்தக்கூடிய கட்டுப்பாடுகள் உள்ளன.
  • உங்கள் பயன்பாட்டின் “ரோல் சென்சார் ”மற்றும்“ பிட்ச் சென்சார் ”மதிப்புகள்.

மடக்குதல்

இந்த கட்டுரையில், ஆண்ட்ராய்டு சென்சார்களின் மூன்று முக்கிய வகைகளிலிருந்து தரவை எவ்வாறு மீட்டெடுப்பது என்பதைக் கண்டோம்: சுற்றுச்சூழல், நிலை மற்றும் இயக்கம் மற்றும் இந்த தரவை உண்மையான நேரத்தில் எவ்வாறு கண்காணிப்பது.

சுவாரஸ்யமான அல்லது தனித்துவமான வழிகளில் சென்சார்களைப் பயன்படுத்தும் எந்த Android பயன்பாடுகளையும் நீங்கள் பார்த்தீர்களா? கீழே உள்ள கருத்துகளில் எங்களுக்குத் தெரியப்படுத்துங்கள்!

ஷியோமி கடந்த வாரம் செப்டம்பர் 11 அன்று நடந்த ஒரு நிகழ்வில், அதன் உளிச்சாயுமற்ற மி மிக்ஸ் கான்செப்ட் தொலைபேசியின் தொடர்ச்சியாக மி மிக்ஸ் 2 ஐ அறிமுகப்படுத்தப்போவதாக கடந்த வாரம் அறிவித்தது. இருப்பினும், ...

சியோமியின் ரெட்மி குடும்பம் மற்றும் மி ஃபிளாக்ஷிப்களைப் பற்றி நிறைய பேர் அறிந்திருக்கிறார்கள், ஆனால் மி நோட் மற்றும் மி மேக்ஸ் சாதனங்களும் பல ஆண்டுகளாக ஒரு அங்கமாக இருந்தன. துரதிர்ஷ்டவசமாக, 2019 ஆம் ஆ...

எங்கள் வெளியீடுகள்