کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش حسگرهای اندروید

 

clip_image001

دوره آموزش برنامه نویسی اندروید

کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.

آموزش حسگرهای اندروید

بسیاری از دستگاه های اندروید حسگرهای داخلی دارند که جنبش، جهت و بسیاری از شرایط محیطی دیگر را می سنجند. سکوی اندروید مولفه های حسگرهای سه صفحه را پشتیبانی می کند.

1)     حسگرهای حرکتی

2)     حسگرهای محیطی

3)     حسگرهای موقعیت

برخی حسگرها سخت افزار محور وبرخی دیگر نرم افزار محور هستند. حسگر هرچه باشد اندروید به ما اجازه می دهد تا ردیف داده ها را از این حسگرها به دست آوریم و از آن در برنامه ی خود استفاده کنیم. برای این منظور اندروید به ما گروه هایی را ارائه می دهد.

اندروید SensorManager و گروه های حس گر را برای استفاده در برنامه هایمان ارائه می دهد. برای استفاده از حسگرها اولین کاری که باید انجام دهید این است که یک آبجکت از گروه SensorManager را به عنوان نمونه قرار دهید، که از طریق ترکیب زیر به دست می آید.

SensorManager sMgr;
        sMgr = (SensorManager)
this.getSystemService(SENSOR_SERVICE);

 

کار بعدی نمونه قرار دادن یک آبجکت از گروه حسگر ها با فراخوانی روش DefaultSensor()  از گروه SensorManager، می باشد. ترکیب آن در زیر ارائه شده است .

Sensor light;
        light = sMgr.getDefaultSensor(Sensor.TYPE_LIGHT);

 

زمانی که حسگر شناسایی شد، لازم است شنونده ی آن را ثبت کرده و دو روش AccuracyChanged  و  onSensorChanged را وارد کنید. ترکیب آن مانند زیر می باشد.

sMgr.registerListener(this, light,SensorManager.SENSOR_DELAY_NORMAL);
public void onAccuracyChanged(Sensor sensor, int accuracy) {
        }
public void
onSensorChanged(SensorEvent event) {
        }

گرفتن لیست حسگرهای پشتیبانی شده

شما می توانید لیستی از حسگرهایی داشته باشد که با فراخوانی روش getSensorList،  توسط دستگاه پشتیبانی می شوند، که لیستی از حسگرها را ارائه می دهد، شامل اطلاعاتی از قبیل نام و شماره ی ورژن و غیره. ترکیب آن در زیر ارائه شده است.

sMgr = (SensorManager)this.getSystemService(SENSOR_SERVICE);
        List<
Sensor> list = sMgr.getSensorList(Sensor.TYPE_ALL);
       
for
(Sensor sensor: list){
        }

علاوه بر این روش ها، روش های دیگری توسط گروه SensorManager، برای سازماندهی چارچوب حسگرها ارائه شده است. این روش ها در جدول زیر ارائه شده است.

ردیف

متد ها و توضیحات

1

getDefaultSensor(int type)

این روش یک حسگر پیش فرض را برای یک نوع ارائه شده، می گیرد.

2

getOrientation(float[] R, float[] values)

این روش توضیحی از کلیپ اصلی حاضر روی کلیپ بورد گزارش می دهد، اما کپی از داده ی آن ارائه نمی شود.

3

getInclination(float[] I)  

این روش زاویه ی شیب کشش زمین را در رادیان هایی از شیب ماتریکس محاسبه می کند.

4

registerListener(SensorListener listener, int sensors, int rate)

این روش یک شنونده برای حسگر ثبت می کند.

5

unregisterListener(SensorEventListener listener, Sensor sensor)

این روش یک شنونده را برای حسگرهایی که با آن ثبت شده است، ثبت آن را کنسل می کند.

6

getOrientation(float[] R, float[] values)

این روش جهت دستگاه را براساس چرخش ماتریکس محاسبه می کند.

7

getAltitude(float p0, float p)

این روش ارتفاع را در فشار اتمسفر و فشار در سطح دریا به متر حساب می کند.

 

مثال

در اینجا مثالی را می بینید که استفاده از گروه SensorManager را توضیح می دهد. این مثال یک برنامه ی پایه ایجاد می کند که به شما اجازه می دهد تا لیست حسگرها را روی دستگاه خود مشاهده کنید.

برای آزمایش این مثال می توانید آن را روی یک دستگاه حقیقی یا یک مقلد اجرا کنید.

مراحل

توضیحات

1

برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان Sensors  تحت بسته ی com.example.sensors نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDK و Compile With در آخرین ورژن Android SDK هستند تا از سطوح بالاتر API استفاده کنید.

2

src/MainActivity.java  را برای افزودن کد لازم تغییر دهید.

3

res/layout/activity_main را برای افزودن مولفه های XML مربوطه تغییر دهید.

4

res/values/string.xml را برای افزودن مولفه های رشته ی لازم تغییر دهید.

5

برنامه را اجرا کرده و یک دستگاه اجرایی اندروید انتخاب کنید، برنامه را روی آن نصب کرده و نتایج را بررسی کنید.

 

در اینجا محتوای فایل تغییر یافته ی فعالیت اصلی را مشاهده می کنید.

src/com.example.sensors/MainActivity.java. 
       
package com.example.sensors;
       
import java.util.List;
       
import android.app.Activity;
       
import android.hardware.Sensor;
       
import android.hardware.SensorManager;
       
import android.os.Bundle;
       
import android.view.Menu;
       
import android.widget.TextView;
public class MainActivity extends Activity {
          
private SensorManager sMgr;
           @Override
          
protected void onCreate(Bundle savedInstanceState) {
                     
super.onCreate(savedInstanceState);
                      setContentView(R.layout.activity_main);
                      TextView sensorsData = ‎‎(TextView)findViewById(R.id.textView1);
                     
sMgr = ‎‎(SensorManager)this.getSystemService(SENSOR_SERVICE);
                      List list =
sMgr.getSensorList(Sensor.TYPE_ALL);

                      StringBuilder data =
new StringBuilder();
                     
for(Sensor sensor: list){
                                 data.append(sensor.getName() +
"\n");
                                 data.append(sensor.getVendor() +
"\n");
                                 data.append(sensor.getVersion() +
"\n");
                           }
                   sensorsData.setText(data);
                }
                   @Override
          
public boolean onCreateOptionsMenu(Menu menu) {
                     
// Inflate the menu; this adds items to the action bar if it is present.
               
      getMenuInflater().inflate(R.menu.main, menu);
                     
return true;
                   }
                }
 

در ادامه محتوای تغییریافته ی xml مربوط به res/layout/activity_main.xml را مشاهده می کنید.

‎‎‎<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"

                 xmlns:tools="http://schemas.android.com/tools"

                 android:layout_width="match_parent"

                 android:layout_height="match_parent"

                 android:paddingbottom="@dimen/activity_vertical_margin"

                 android:paddingleft="@dimen/activity_horizontal_margin"

                 android:paddingright="@dimen/activity_horizontal_margin"

                 android:paddingtop="@dimen/activity_vertical_margin"

                 tools:context=".MainActivity">

 

       <scrollview android:id="@+id/scrollView1"

                     android:layout_width="wrap_content"

                     android:layout_height="wrap_content"

                     android:layout_alignparentleft="true"

                     android:layout_alignparenttop="true"

                     android:layout_marginleft="16dp"

                     android:layout_margintop="16dp">

       

           <linearlayout android:layout_width="match_parent"

                           android:layout_height="match_parent"

                           android:orientation="vertical"> 

 

               <textview android:id="@+id/textView1"

                           android:layout_width="wrap_content"

                           android:layout_height="wrap_content"

                           android:text="Medium Text"

                           android:textappearance="?android:attr/textAppearanceMedium" />

                  </LinearLayout>

               </ScrollView>

</relativelayout>

در زیر محتوای res/values/string.xml را مشاهده می کنید.

<?xml version="1.0" encoding="utf-8" ?>

<resources>   

 

       <string name="app_name">Sensors</string>

       <string name="action_settings">Settings</string>

       <string name="hello_world">Hello world!</string>

       <string name="list">List of sensors supported</string>   

</resources>

در زیر محتوای فایل AndroidManifest.xml را مشاهده می کنید.

<?xml version="1.0" encoding="utf-8" ?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

           package="com.example.sensors"

           android:versioncode="1"

           android:versionname="1.0">

 

       <uses-sdk android:minsdkversion="8"

                  android:targetsdkversion="17" />

 

       <application android:allowbackup="true"

                      android:icon="@drawable/ic_launcher"

                      android:label="@string/app_name"

                      android:theme="@style/AppTheme">

       

              <activity android:name="com.example.sensors.MainActivity"

                          android:label="@string/app_name">

           

                     <intent-filter>

               

                            <action android:name="android.intent.action.MAIN" ‎‎ />

 

                            <category android:name="android.intent.category.LAUNCHER" />

               

            </intent-filter>

                  </activity>

               </application>

           

</manifest>

اجازه دهید برنامه ی Sensor تازه تغییریافته را اجرا کنیم.فرض می کنیم که شما در هنگام انجام تنظیمان محیط AVD خود را ایجاد کرده اید. برای اجرای برنامه از Eclipse، یکی از فایل های فعالیت برنامه را باز کرده و روی آیکن icon در تولبار کلیک کنید. Eclipse برنامه را روی AVD نصب کرده و آن را شروع می کند. اگر همه چیز در مورد برنامه و تنظیمات آن درست باشد، پنجره ی مقلد زیر نمایش داده خواهد شد.

حالا اگر به صفحه ی دستگاه خود نگاه کنید، لیست حسگرهایی را همراه با نام و شماره ورژن و دیگر اطلاعات، مشاهده می کنید که توسط دستگاه شما پشتیبانی می شوند.

اگر این برنامه را روی دستگاه های مختلف اجرا کنید، خروجی متفاوت خواهد بود، زیرا خروجی بستگی به تعداد حسگرهایی دارد که توسطدستگاه شما پشتیبانی می شوند.

1394/07/27 4333 1885
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...