شاهرخ جهان زاده

توسعه دهنده اندروید
  • تعداد ارسال ها

    41
  • تاریخ عضویت

  • آخرین بازدید

  • Days Won

    12

شاهرخ جهان زاده last won the day on سپتامبر 5

شاهرخ جهان زاده had the most liked content!

اعتبار در انجمن

15 Good

1 دنبال کننده

درباره شاهرخ جهان زاده

  • درجه
    توسعه دهنده فعال
  1. سلام باید از طریق شرکتهایی که ارائه دهنده خدمات هاست هستند (مثل mihanwebhost.com) یک هاست مناسب با اپ از نظر حجم داده ها خریداری کنید یا از هاستهای رایگان استفاده کنید. بعد توی cPanel اقدام به بارگذاری فایلهای صوتی کنید. در این حالت نیاز به یک دامنه هم دارید تا بتونید دسترسی مستقیم ایجاد کنید... بعضی از سایتها هستند که تمامی این کارها رو به صورت رایگان اما محدود براتون انجام میدن به این صورت که میتونید از دامنه و هاست اونها استفاده کنید...
  2. سلام از BroadCast Receiver یا Service استفاده کنید...
  3. چرا دیتابیس رو در کلاس Application انجام میسازید؟؟
  4. File file = new File(DIR_DATABASE); if (file.exists() && !file.isDirectory()) { //do what ever... } با این کد بررسی کنید ببنید فایل موجود هست یا نه
  5. پرمیشن برای دسترسی به خواندن یا نوشتن اطلاعات رو قرار دادید یا خیر؟ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  6. سلام هر اکتیوی به خودی خود دارای Bundle هست یعنی میتونید مقادیر رو برای پاس دادن بین اکتیوی ها در یک متغیر خاص ذخیره کنید، به صورت زیر میتونید اینکار رو انجام بدید: Intent intent = new Intent(getApplicationContext(), MainActivity.class); intent.putExtra("SPECIAL_WORD", yourData); startActivity(intent); و بعد با استفاده از دستور زیر در هر اکتیوی که خواستید اون رو فراخوانی کنید: String s = getIntent().getStringExtra("SPECIAL_WORD"); ولی در کل برای اینکه بتونید هم مقدار رو ذخیره کنید و هم تیک مربوط به checkBox بهتون پیشنهاد میکنم از SharedPreferences استفاده کنید...
  7. از ToggleButton هم میتونید استفاده کنید و دو حالت On و Off رو براش تعریف کنید...
  8. همچنین میتونید در فایل مانیفست و بخش application کد زیر رو وارد کنید: android:largeHeap="true"
  9. سلام مطمئنا سرگذشت اکثر افراد موفق رو خوندید، خیلی ها تحصیلاتشون رو نصفه و نیمه رها کردن تا دنبال اهدافشون برن. شاید شما هم یکی از اونها باشید... من خودم مرز 31 سالگی رو به تازگی رد کردم ولی هیچوقت نمیگم سنم داره بالا میره و بلکه مهم روحیه هست که باید به هر نحوی اون رو حفظ کنید. ***** اگر واقعا به دنیای اپلیکیشن علاقه دارید و ایده های نابی در ذهنتون هست (هر چند این ایده ها ساده باشن) بهتون پیشنهاد میکنم دنبال یادگیری برنامه نویسی نرید، بلکه با برون سپاری (Out Source) کردن جامه عمل به ایدهاتون بپوشونید. جمله بالا که نوشتم، یکی از گفته های آقای چاد مورتا هست، کسی که بدون هیچ دانش برنامه نویسی، امپراطوری برای خودش بنا کرد و میلیونها دلار با ایده های ساده به جیب زد و همچنان این امپراطوری رو اداره میکنه. در سرگذشت آقای مورتا میخونیم که: از یک تصادف هولناک جان سالم بدرد برد و تا زمانی که مجددا تونست سلامتی کاملش رو بدست بیاره مجبور شد 100 هزار دلار (چیزی در حدود 350 میلیون تومان) هزینه کنه. در حالی که هیچ پولی برای اینکار نداشت و با قرض کردن تونست به زندگی برگرده. سنگ بنای امپراطوری آقای مورتا به این شکل بنا شد که فقط یک ایده به ذهنش رسید و برای عملی کردن ایده چیزی در حدود 1800 دلار (اگر مبلغ رو اشتباه نکنم) از پدرخوانده خودش قرض کرد و ایده رو عملی کرد. **** یعنی برنامه نویس استخدام کرد تا اونها براش کار رو انجام بدن و نتیجه کارش رو گرفت، بعد از انتشار اولین اپ، هزاران دلار کسب درآمد کرد... بهتون پیشنهاد میکنم که کتاب امپراطوری اپ، نوشته چاد مورتا رو بخونید... من دارم از ایده های همین کتاب استفاده میکنم، با اینکه خودم برنامه نویسی میکنم ولی برای ایده های خودم "برنامه نویس" استخدام کردم تا فقط اون ها رو مدیریت کنم... شما هم همین روش رو پیش بگیرید... براتون آرزوی موفقیت میکنم...
  10. سلام شما میتونید کانال رو با استفاده از دستور زیر به کاربر نشون بدید: Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://t.me/TVnavad")); startActivity(intent);
  11. سلام این آموزش رو مطالعه کنید: http://mrbool.com/how-to-change-the-layout-theme-of-an-android-application/25837
  12. سرویس رو در فایل مانیفست رجیستر کردید؟؟!!
  13. کدهای گریدل رو اینجا بذارید تا ببینیم...
  14. چون تعداد اکتیویتی ها زیاد هست، بهتره برای بالا بردن سرعت اپلیکیشن یک فایل جاوای مجزا بسازید و بعد اون رو فراخوانی کنید... به شکل زیر: import android.app.Service; import android.content.Context; import android.content.Intent; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.IBinder; import android.util.Log; public class Tracker extends Service implements LocationListener { private final Context mContext; boolean isGPSEnabled = false; boolean isNetworkEnabled = false; boolean canGetLocation = false; Location location; double latitude; double longitude; private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 100; private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 10; protected LocationManager locationManager; public Tracker(Context context) { this.mContext = context; getLocation(); } public Location getLocation() { try { locationManager = (LocationManager) mContext .getSystemService(LOCATION_SERVICE); isGPSEnabled = locationManager .isProviderEnabled(LocationManager.GPS_PROVIDER); isNetworkEnabled = locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (!isGPSEnabled && !isNetworkEnabled) { } else { this.canGetLocation = true; if (isNetworkEnabled) { locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); if (locationManager != null) { Criteria criteria = new Criteria(); location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria,false)); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } } } if (isGPSEnabled) { if (location == null) { locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); if (locationManager != null) { Criteria criteria = new Criteria(); location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria,false)); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } } } } } } catch (Exception e) { e.printStackTrace(); } return location; } public double getLatitude(){ if(location != null){ latitude = location.getLatitude(); } return latitude; } public double getLongitude(){ if(location != null){ longitude = location.getLongitude(); } return longitude; } public boolean canGetLocation() { return this.canGetLocation; } @Override public IBinder onBind(Intent intent) { return null; } @Override public void onLocationChanged(Location location) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } } و بعد در هر اکتیویتی که خواستید با دستور زیر اون رو فراخوانی کنید: //Global object... Tracker tracker; ... ... ... //In onCreate method... tracker = new Tracker(getContext().getApplicationContext()); if (tracker.canGetLocation()){ double curLat = tracker.getLatitude(); double curLong = tracker.getLongitude(); CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(curLat, curLong)).zoom(16).build(); googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); } else { //do what ever for example make a Toast... }
  15. یکی از امکاناتی که در اختیار ما هست اینه که میتونیم به ازای تغییراتی که در فاصله و زمان اتفاق میوفته موقعیت رو آپدیت کنیم، میتونید به شکل زیر عمل کنید: ابتدا دو گزینه برای این کار میسازیم: // حداقل فاصیه برای آپدیت شدن بر حسب متر private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 100; // 100 متر // حداقل زمان برای آپدیت شدن بر حسب میلی ثانیه private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 5; // 5دقیقه و بعد با استفاده از دستور زیر میتونید این آپدیت ها رو انجام بدید: locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); بهترین کار این هست که این شرایط رو برای زمانی که کاربر به یکی از دو گزینه GPS و یا Network دسترسی داره انجام بدید که برای GPS به شکل زیر میشه: locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); فاصله و زمان رو جوری تنظیم کنید که یک حد معقول رو داشته باشه، البته بستگی به کاربرد برنامتون داره ولی انتخاب مثلا فاصله 1 متر یا زمان 10 ثانیه برای آپدیت شدن میتونه نتیجه ناگواری مثل مصرف بیش از حد باتری رو داشته باشه...