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

مدیر انجمن
  • تعداد ارسال ها

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

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

  • Days Won

    22

شاهرخ جهان زاده last won the day on دسامبر 20 2017

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

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

31 Excellent

3 دنبال کننده

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

  • درجه
    توسعه دهنده فعال
  1. شما باید پرمیشن ها رو بررسی کنید... علاوه بر ACCESS_FINE_LOCATION باید ACCESS_COARSE_LOCATION رو هم داشته باشید... میتونید به روش زیر عمل کنید: public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback, android.location.LocationListener { private GoogleMap mMap; private MapView map_view; //global objects for permission check private static final String[] LOCATION_PERM = {android.Manifest.permission.ACCESS_FINE_LOCATION}; private static final String[] COARSE_PERM = {Manifest.permission.ACCESS_COARSE_LOCATION}; LocationManager locationManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); map_view = (MapView) findViewById(R.id.map_view); map_view.onCreate(savedInstanceState); map_view.getMapAsync(new OnMapReadyCallback() { @Override public void onMapReady(GoogleMap gMap) { googleMap = gMap; if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(LOCATION_PERM, 1337 + 3); requestPermissions(COARSE_PERM, 1337 + 3); } return; } googleMap.setMyLocationEnabled(true); locationManager = (LocationManager) getSystemService(getApplicationContext().LOCATION_SERVICE); Criteria criteria = new Criteria(); Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, false)); String bestProvider = String.valueOf(locationManager.getBestProvider(criteria, true)).toString(); if (location != null) { CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(location.getLatitude(), location.getLongitude())).zoom(16).build(); googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); } else { locationManager.requestLocationUpdates(bestProvider, 1000, 16, this); } } @Override public void onLocationChanged(Location location) { if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(LOCATION_PERM, 1337 + 3); requestPermissions(COARSE_PERM, 1337 + 3); } return; } locationManager.removeUpdates(this); CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(location.getLatitude(), location.getLongitude())).zoom(16).build(); mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } }
  2. calculateBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int number1 = Integer.parseInt(fieldOne.getText.toString()); int number2 = Integer.parseInt(fieldTwo.getText.toString()); int number3 = Integer.parseInt(fieldThree.getText.toString()); int number4 = Integer.parseInt(fieldFour.getText.toString()); int v1 = number1 * (number2 + number3) * 0.005; int v2 = v1 + number1 * (number2 + number3); int v3 = (v2 * number4) / 100; int v4 = v3 * 0.01; int v5 = (v2 + v3 + v4) * 0.09; int v6 = v1 + v3 + v4 + v; v1Field.setText(v1 + ""); v2Field.setText(v2 + ""); v3Field.setText(v3 + ""); v4Field.setText(v4 + ""); v5Field.setText(v5 + ""); v6Field.setText(v6 + ""); } }); ببینید این روش جواب میده!!! خودم تستش نکردم...
  3. احتمال میدم که از پرمیشن ها باشه، چون باید برای اپ این رو مشخص کنید... چون نحوه دریافت پرمیشن ها از نسخه اندروید 6 به بعد متفاوت شده و در همه حالات باید توسط اپ این قضیه چک بشه... اگر کدهای اکتیویتی که مپ رو توی اون پیاده سازی کردید رو بذارید بهتر میشه راهنمایی کرد...
  4. سلام، روی چه نسخه هایی از اندروید دارید تست میکنید؟
  5. من پیشنهاد میکنم برای راست چین کردن از این روش استفاده نکنید... بهترین کار این هست که کل اپ رو برای زبانی مثل فارسی راست چین کنید و میتونید از روش زیر استفاده کنید: Locale farsi = new Locale("fa", "IR"); getResources().getConfiguration().setLocale(farsi); در غیر این صورت باید چیدمان تمام لایه ها رو خودتون به صورت دستی درست کنید...
  6. راست چین کردن رو به چه روشی انجام میدید؟! لطفا کدهای خودتون رو هم قرار بدید تا بهتر بشه راهنمایی کرد...
  7. این پست رو ملاحظه کنید: https://stackoverflow.com/questions/42949974/android-support-repo-46-0-0-with-android-studio-2-3
  8. این نکته رو فراموش کردم بگم: اگر از GPSTracker استفاده کردید، قائدتا نباید به مشکلی بر بخورید، من به روش زیر از GPSTracker استفاده کردم: if (gpsTracker.canGetLocation()){ double curLat = gpsTracker.getLatitude(); double curLong = gpsTracker.getLongitude(); CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(curLat, curLong)).zoom(16).build(); googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); } else { gps_setting_holder.setVisibility(View.VISIBLE); } راه دیگه ای هم هست، اونم اینکه از Criteria استفاده کنید: LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, false)); CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(location.getLatitude(),location.getLongitude())).zoom(16).build(); googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
  9. سلام احتمال میدم که از اجازه دسترسی ها باشه، اگر کدها رو بذارید بهتر میشه بررسی کرد... به دلیل اینکه در قسمت Recent Location Request اسم اپ شما نیومده و به این معنی هست که دسترسی یا Permission با مشکل برخورده...
  10. دقیقا... در واقع RecyclerView نسخه پیشرفته تر همون ListView هست که امکانات بیشتری رو در اختیارتون قرار میده...
  11. سلام این بستگی به نوع دیزاین و اطلاعاتی که قرار هست نمایش بدید داره... به شخصه اگر عکس در اطلاعات باشه ترجیح میدم از RecyclerView استفاده کنم ولی اگر در اطلاعات نمایشی فقط تکست وجود داشته باشه پیاده سازی ListView راحتتره... باید به این مسئله دقت کنید که در پیاده سازی ListView محدودیتهایی وجود داره، مثلا حداکثر لیست ما میتونه 200 مورد رو نشون بده و در طراحی آیتمهای اون هم باید دقت کنید که عکسها حجم بسیار پایینی داشته باشن تا در گوشی های مختلف ایجاد محدودیت از لحاظ حافظه نکنه... در کل از نظر طراحی ظاهری RecyclerView بهتر هست چون زیبایی بهتری داره...
  12. سلام اطلاعاتی که به ریسایکلرویو اضافه میکنید به چه صورت هست؟ یعنی از سرور میخونه یا در دیتابیس وجود دارن و یا به صورت آرایه اضافه میشن؟ کلدهای مربوطه رو هم بذارید تا بهتر بشه راهنمایی کرد...
  13. نکته ای که هست و در تجربه به من ثابت شده این هست که شما از هر حالتی که از پروگارد استفاده کنید میشه به کدها دست پیدا کرد تنها کاری که میشه کرد اینه که روند این کار رو سخت کنید... مثلا یک روش که برنامه نویس ها استفاده میکنن این هست که از سیستم کلاس در کلاس استفاده میکنن، یعنی انقدر کلاسها رو در دل هم ایجاد میکنن که کسی که اقدام به مهندسی معغیر مجاز میکنه کاملا سر در گم میشه، به این صورت که پکیج هایی رو تحت عناوین مختلف (مثلا از a تا z) میسازن و کلاسهای ایجاد شده درون اونها رو هم با اسمهای گمراه کننده میسازن که این کار باعث سر در گمی خواهد شد و پروسه مهندسی معغیر مجاز به یک چالش بسیار سخت تبدیل میشه... راه بعدی این هست که دسترسی ها به سرور و کدهای کلیدی تماما باید رمز گذاری(encode) بشن و ترجیحا تا اونجایی که میشه سمت سرور ایجاد بشن... اگر از APIهای مختلف استفاده میکنید به توضیحات اونها توجه کنید به دلیل اینکه اکثرا توضیحاتی در مورد پروگارد دادن، یعنی کدهایی که باید در پروگارد اضافه کنید رو براتون نوشتن...
  14. سلام تا اونجایی که ذهن من یاری میکنه باید یک خط به کدتون اضافه کنید: buildTypes { release { minifyEnabled true useProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
  15. سلام میتونید در کلاس service از onTaskRemove استفاده کنید که در واقع باید override بشه: @Override public void onTaskRemoved(Intent rootIntent){ Intent alarmIntent = new Intent(getActivity(), ReceiverUpdateData.class); AlarmManager manager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), Integer.parseInt(newValue.toString())*60*1000, PendingIntent.getBroadcast(getActivity(), 0, alarmIntent, 0)); super.onTaskRemoved(rootIntent); }