مدتی بود که میخواستم یک برنامه با Kotlin بنویسم اما خب سختی کار کوچ از جاوا به کاتلین و به خصوص نداشتن ; در اون باعث میشد که هر بار انجامش ندم :-) دیگه اینبار دل رو به دریا زدم.
برای دیتای زلزله، چندین وبسرویس وجود داره که من قبلا دیتای USGS رو دیده بودم. خروجی geojson میده که خب چون کار اصلی من روی دادههای مکانی و نقشه است برای من خروجی خیلی مناسبی بود. شروع ایجاد پروژه جدید رو زدم و حداقل اندروید رو روی ۲۱ گذاشتم. خوبی این نسخه اینه که خیلی از مشکلات نسخههای پایین اندروید رو حل کرده. کار کردن بر روی vector و transitions سادهتره و نیازی به هندل کردن multi dex دیگر نیست.
خیلی گشتم اما متاسفانه نتونستم طرحی برای اپلیکیشن مربوط به زلزله در اینترنت پیدا کنم. از شهرام هم که کارش همین طراحی است هم پرسیدم. اون هم نتونست طرح خاصی رو پیدا کنه. برای همین مجبور شدم هرچی طراحی که مربوط به نقشه بود رو یه نگاهی بندازم و این طرح رو پیاده کنم. میتونست خیلی بهتر باشه.
دو ساعت اول کد نویسی خیلی عجیب بود. برخی از کارها رو آدم بصورت ناخودآگاه انجام میده، کاری که در کاتلین دیگه مرسوم نیست اما واقعا همین دو ساعت اولش سخت بود. بعد از اون با قدرت خود اندروید استودیو، الگوهای اون و حتی تبدیل اتوماتیک کد جاوا به کاتلین بسیاری از مشکلات حل شد.
کدها کوتاهتر، یه سری از توابع بخصوص در رشتهها به غایت ساده و در دسترستر وجود دارند. برخی از پیادهسازیها مانند implement کردن کلاسهای interface و هندل کردن کلیک بر روی المانها کمی متفاوتتر از جاوا بود که با جستجو در گوگل حل میشد. تعاریف کلاسها و توابع استاتیک هم عوض شده بود که اونا رو هم با کمی جستجو فهمیدم.
کدی که در نهایت تولید شده مطمئنم بهینه نیست و حتی شاید نوع نوشتارش درست نباشه اما برای شروع برای خودم حداقل خیلی رضایتبخش بود. اگه کسی اشکالی در اون میبینه خوشحال میشم که با ثبت issue و حتی PR به اون در بهتر کردنش کمک کنه.
کاتلین رو شروع کنید، از چیزی که به نظر میرسه سادهتره :-)
از هوتن براری هم ممنونم. مثل همیشه برنامه رو تست کرد و مشکلات اون رو ذکر کرد. مرسی که هستی.
پروژه رو به صورت کامل در گیتهاب به این نشانی قرار دادم:
برای تست سورس برنامه فقط به API Key گوگل برای نقشه نیاز دارید که باید برای پروژه از کنسول گوگ دریافتش کنید و در فایل مربوطه قرارش بدید. تنها دسترسی مورد نیاز برای اجرای برنامه، اینترنت است. با اینکه از نقشه گوگل استفاده شده اما نیاز به دسترسی به موقعیت شما ندارد.
لینک دانلود آخرین نسخه برنامه به صورت apk در اینجا در دسترس است: