برنامه های کاربردی[۳۳]
اندروید به همراه بسته های مختلفی از جمله email client, SMS program, calendar, maps, browser, contacts, and others ارائه میشود. تمام این برنامه ها با بهره گرفتن از زبان برنامه نویسی جاوا نوشته شده اند.
چارچوب برنامه[۳۴]
با فراهم آوردن پلتفرم توسعه باز[۳۵] اندروید برنامه سازان را قادر کرده است تا برنامه های کاربردی خلاقانه و غنی برای این پلت فرم فراهم سازند. توسعه دهندگان آزادی کامل دارند تا از ویژگیهایی مانند دسترسی به سخت افزار، دسترسی به اطلاعات محلی (موقیت جغرافیایی) اجرای سرویس های پس زمینه[۳۶]، تنظیم زنگ ساعت، اضافه کردن اطلاعیه ها[۳۷]به نوار وضعیت و بسیاری بسیاری دیگر در برنامه هایی که میسازند، استفاده کنند.توسعه دهندگان دسترسی کامل به همان چارچوب APIهایی دارند که برنامه های هسته[۳۸]دارند. معماری برنامه های کاربردی[۳۹]به منظور ساده سازی استفاده مجدد از کامپوننت ها طراحی شده است. هر برنامه ای می تواند قابلیت های خود را در اختیار دیگر برنامه ها قرار دهد و همچنین از قابلیت های دیگر برنامه ها استفاده کند برنامه های زیربنایی، مجموعه ای از سرویس ها و سیستم های زیرند:
-
- مجموعه قابل گسترشی از Viewها که برای ساخت برنامه های کاربردی استفاده می شوند، مانند lists, grids, text boxes, buttons, and even an embeddable web browser
-
- Content Providers، که برنامه ها را قادر میسازد تا به اطلاعات برنامه های دیگر مانند لیست تماس، دسترسی پیدا کنند یا حتی اجازه دسترسی به اطلاعات خود را به برنامه های دیگر دهند.
-
- یک مدیر منابع (Resource Manager) اجازه دسترسی به منابعی که کد-برنامه نیستند را فراهم میکند مانند دسترسی به رشته های محلی (localized strings)، تصاویر و فایل های مربوط به طرح برنامه (layout files).
-
- یک مدیر اطاعیه (Notification Manager)، که از این طریق برنامه ها را قادر میکند تا هشدارهای خود را در نوار وضعیت نشان دهند.
-
- یک مدیر فعالیت (Activity Manager)، که مدیریت چرخه زندگی (lifecycle) برنامه ها را در دست دارد و به نحوه اجرای برنامه ها نظارت میکند.
زمان اجرای اندروید[۴۰]
اندروید شامل مجموعه ای از کتابخانه های اصلی است که اکثر عملکردهای قابل دسترس را با بهره گرفتن از زبان جاوا ممکن میسازد. هر برنامه کاربردی اندروید در فرایند مخصوص به خودش اجرا میشود و دسترسی مخصوص به خود در ارتباط با ماشین مجازی دالویک دارد. این ماشین بگونه ای ساخته شده است که هر دستگاهی (device) میتواند چندین ماشین مجازی را بطور همزمان اجرا کند. هر ماشین مجازی دالویک فایل ها را به فرمت (dex.) اجرا میکند که اینکار باعث بهینه سازی در دستگاه هایی که حافظه پایینی دارند، می شود. این ماشین مجازی مبتنی بر رجیسترهاست و کلاسهایی که توسط کامپایلر جاوا ساخته شده است را اجرا میکند.
[۴۱] کتابخانهها
اندروید شامل مجموعه از کلاسهای ++C/C است که توسط کامپوننت های سیستم اندروید مورد استفاده قرار میگیرند. همچنین استفاده از این قابلیت به توسعه دهندگان نیز داده شده است. بعضی از این کتابخانه های اصلی به این قرارند:
System C library, Media Libraries, Surface Manager, SQLite,….
هسته لینوکس[۴۲]
اندروید متکی بر لینوکس نسخه ۲٫۶ برای انجام سرویس های اصلی مانند security, memory management, process management, network stack و driver model است. این هسته همچنین مانند یک لایه انتزاعیمابین سخت افزار و سایر نرم افزارها عمل میکند.
جدول۴- ۱-لایه های سیستم عامل آندروید[۵۱]
فاز اول این گزارش برای جمعآوری داده های آموزشی است. برای اهداف مورد نظر ما در این پروژه، ما نیاز به استفاده از داده های شتابسنج، حسگر جهتیابی، همچنین سرویسهای مکانیابیGPS) ، شبکه (داریم. شتابسنج در تلفنهای هوشمند، سه مقدار برای شتاب در واحد m/s2 در امتداد محورهایX ، Yو Z را باز میگردانند. در شکل ۴-۲ نقشه برداری از محورهای جهتی شتابسنج در یک دستگاه در حالت استراحت (ساکن) به تصویر کشیده است.
شکل۴- ۱-محورهای شتاب سنج[۱۰]
محور X(جانبی): شتابوری (چپ به راست) که برای آن ارزش مثبت بیانگر حرکت به سمت راست در حالی که آنهایی که با منفی نشان داد شده اند حرکتی به سمت چپ دارند.
محور Y(طولی): حرکت به جلو مقادیر مثبت و شتاب رو به عقب با مقادیر منفی به نمایش گذاشته شده اند.
محورZ (عمودی): در این محور شتاب رو به بالا یا رو به پایین است که برای آن، عدد مثبت نشان دهنده حرکاتی مانند برداشتن دستگاه میباشد.
۴-۴-مجموعه داده های برنامه
ما بدنبال طراحی یک برنامه Android برای جمعآوری اطلاعات از حسگرهای موجود در یک گوشی هوشمند هستیم. این نرمافزار دسترسی به قطعات سختافزاری از طریق بستههای سختافزاری ارائه شده توسط SDK آندروید را فراهم میسازد. این کار از طریق دسترسی به حسگرها و ذخیره مقادیر جمعآوری شده از این حسگرها در یک فایلCSV با عنوان زمان مربوطه و تاریخ از زمانی که برنامه برای اولین بار تحت فایل HumanTracingدر کارت SDآغاز شده، انجام میپذیرد. برای دسترسی به اجزای سختافزاری دستگاه مانند شتابسنج، حسگر جهتیابی و GPS ما نیاز به استفاده از عناصر چارچوب برنامه مربوطه که در شکل۴-۱ نشان داده شده داریم. برای دسترسی به مکان بر اساس سرویسهای گفته شده در بخش قبلی ما نیاز به ایجاد یک شی کلاس[۴۳]LocationManager است در حالی که برای حسگرهای دیگر ما نیاز به ایجاد یک شی کلاس SensorManager خواهیم داشت. برای فهمیدن تغییر مقادیر در حسگرها و خدمات مکان یابی، SDK اندوریدواسط SensorEventListener و LocationListenerرافراهم کرده است. علاوه بر این کلاسها ارائه شده توسط SDK آندروید، ما یک کلاس FileManager خواهیم داشت که عملیات تبادل فایل را سادهتر و قابل استفادهتر می کند. کلاسهای LocationManager، SensorManager و FileManager در لایه چهارچوب برنامه ها با زمینه های لازم در زیر توضیح داده شده است.
۴-۵-مدیریت حسگر
این کلاس دسترسی به حسگرهای جاسازی شده در تلفنهای هوشمند را فراهم می کند. این کلاس هنگامی که هدف برنامه دسترسی به حسگرهایی مانند جهتیابی، مجاورت، شتابسنج و دماسنج باشد، می تواند مفید واقع گردد. در زیر تنها دو نمونه تابع از توابع مربوط به این کلاس توضیح داده شده است.
۱-حسگر عمومیgetDefaultSensor (نوعint )
یک شی کلاس حسگر را با توجه به نوع آن بازمیگرداند، مانند مقدار ثابت SENSOR.TYPE_ACCELEROMETER این مقادیر ثابت در حالی که در انواع حسگرها متفاوت هستند ولی در قطعه کد مشابه استفاده می شود.
۲- registerListenerبولین بشکل عمومی (SensorEventListener listener, Sensor sensor, int rate)
registerListener شی است برای بدست آوردن سرعت کسب تغییرات حسگر میباشد. بطور مثال ممکن استدر طول جمعآوری داده ها در یک شی حسگر شتابسنج registerListener با نرخ ۲۴ نمونه/ثانیه ثبت شده است.
۴-۶-مدیریت مکان
این کلاس دسترسی به سیستمهای شامل سرویسهای مکان یابی را فراهم می کند .این سرویسهابه برنامه های کاربردی اجازه به دست آوردن نسخههای به روز موقعیت جغرافیایی دستگاه و یا هشداربرای یک برنامه مشخص شده در دستگاه تلفن همراه برای ورود به محدوده یک مکان جغرافیایی از قبل مشخص شده را می دهند.برنامه جمعآوری داده ها، بهروزرسانی دورهای را در مکان فراهم می کند. این نرمافزار از مدیریت مکان برای دریافت بروزرسانی اطلاعات محل کاربر در مرحله جمعآوری داده ها استفاده می کند.