رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

نحوه نمایش کنونی کاربر در نقشه افلاین گوگل مپ


پست های پیشنهاد شده

در 3 ساعت قبل، Javad Mahmoodi گفته است :

دوست عزیز اگر بخوام تو برنامه کدی بنویسم تا هر 5 دقیقه یک طول و عرض جغرافیایی را از گوشی کاربر بگیره و ذخیره کنه باید چیکار کنم؟

البته من تونستم کاری کنم که هرموقع رو دکمه ذخیره کلیک کرد طول و عرض جغرافیایی را ذخیره کنه اما میخوام بصورت اتوماتیک هر 5 دقیقه یکبار این کار واسم انجام بشه

سلام دوست عزیز باید یک تایمر بزارین وست کنید که هر 5 دقیقه یکبار مکان رو بگیره

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 16 ساعت قبل، a.khosroabadi گفته است :

سلام دوست عزیز باید یک تایمر بزارین وست کنید که هر 5 دقیقه یکبار مکان رو بگیره

فرقی نمیکنه که تو کدوم اکتیویتی باشه؟

چون تعداد اکتیویتی های برنامه ام زیاد هستش

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 21 ساعت قبل، Javad Mahmoodi گفته است :

دوست عزیز اگر بخوام تو برنامه کدی بنویسم تا هر 5 دقیقه یک طول و عرض جغرافیایی را از گوشی کاربر بگیره و ذخیره کنه باید چیکار کنم؟

البته من تونستم کاری کنم که هرموقع رو دکمه ذخیره کلیک کرد طول و عرض جغرافیایی را ذخیره کنه اما میخوام بصورت اتوماتیک هر 5 دقیقه یکبار این کار واسم انجام بشه

یکی از امکاناتی که در اختیار ما هست اینه که میتونیم به ازای تغییراتی که در فاصله و زمان اتفاق میوفته موقعیت رو آپدیت کنیم، میتونید به شکل زیر عمل کنید:

ابتدا دو گزینه برای این کار میسازیم:

// حداقل فاصیه برای آپدیت شدن بر حسب متر
    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 ثانیه برای آپدیت شدن میتونه نتیجه ناگواری مثل مصرف بیش از حد باتری رو داشته باشه...

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 2 دقیقه قبل، شاهرخ جهان زاده گفته است :

یکی از امکاناتی که در اختیار ما هست اینه که میتونیم به ازای تغییراتی که در فاصله و زمان اتفاق میوفته موقعیت رو آپدیت کنیم، میتونید به شکل زیر عمل کنید:

ابتدا دو گزینه برای این کار میسازیم:


// حداقل فاصیه برای آپدیت شدن بر حسب متر
    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 ثانیه برای آپدیت شدن میتونه نتیجه ناگواری مثل مصرف بیش از حد باتری رو داشته باشه...

چون تعداد اکتیویتی های برنامه ام زیاد هستش فرقی نمیکنه که تو کدوم اکتیویتی باشه؟

کد بالا را کجا باید استفاده کنم؟

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 42 دقیقه قبل، Javad Mahmoodi گفته است :

چون تعداد اکتیویتی های برنامه ام زیاد هستش فرقی نمیکنه که تو کدوم اکتیویتی باشه؟

کد بالا را کجا باید استفاده کنم؟

 

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

به شکل زیر:

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...
                }

 

ویرایش شده توسط شاهرخ جهان زاده
لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط Androidm
      سلام دوستان وقتتون بخیر 
      من apikey گوگل مپ رو گرفتم و نقشه اجرا میشه و موقعیت کاربر به درستی نمایش داده میشه. چطور باید نام شهر رو گرفت؟ تو کدوم تابع
    • توسط 3245
      سلام
      من درحال اموزش اندروید هستم،
      برای این کار، ویدیوهای ساخت کتاب رو خریدم، اما چون اطلاعاتم خیلی کمه،درک مطالب توی این ویدئو سخته برام
      میخواستم اگرممکنه دوستان کلیپی پیشنهاد بدن که سبک تر باشه و بیشتر به مباحث پایه بپردازه، البته خیلی هم نخواد از صفر شروع کنه که خسته کننده میشه...
      طوری باشه پروژه محور باشه اما پروژه سبکی باشه.
       
      ممنون.
       
       
    • توسط Zeynab Tri
      سلام. دوستان بنده یک عدد تازه کار در برنامه نویسی اندروید هستم و نمیدونم این ارور رو چطور حل کنم. ممنون میشم اگر کسی میتونه من رو راهنمایی کنه.عکسش رو گذاشتم.

    • توسط Farzad Sarseifi
      آموزش پیاده سازی دیتابیس اندروید همراه با مثال عملی
      در این اموزش میتوانید یک دیتابیس اندروید ایجاد کنید که توانایی افزودن اطلاعات،ویرایش اطلاعات ،حذف و لیست گیری اطلاعات باشید.
       
      ابتدا  یک کلاس برای ایجاد SqliteopenHelper دیتایس و جداول ایجاد میکنیم و متدهای مورد نظر را نیز در ادامه مینویسیم
      import java.util.ArrayList; import java.util.HashMap; import java.util.Hashtable; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.DatabaseUtils; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase; public class DBHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "MyDBName.db"; public static final String CONTACTS_TABLE_NAME = "contacts"; public static final String CONTACTS_COLUMN_ID = "id"; public static final String CONTACTS_COLUMN_NAME = "name"; public static final String CONTACTS_COLUMN_EMAIL = "email"; public static final String CONTACTS_COLUMN_PHONE = "phone"; private HashMap hp; public DBHelper(Context context) { super(context, DATABASE_NAME , null, 1); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL( "create table contacts " + "(id integer primary key, name text,phone text,email text)" ); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("DROP TABLE IF EXISTS contacts"); onCreate(db); } public boolean insertContact (String name, String phone, String email) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("name", name); contentValues.put("phone", phone); contentValues.put("email", email); db.insert("contacts", null, contentValues); return true; } public Cursor getData(int id) { SQLiteDatabase db = this.getReadableDatabase(); Cursor res = db.rawQuery( "select * from contacts where id="+id+"", null ); return res; } public int numberOfRows(){ SQLiteDatabase db = this.getReadableDatabase(); int numRows = (int) DatabaseUtils.queryNumEntries(db, CONTACTS_TABLE_NAME); return numRows; } public boolean updateContact (Integer id, String name, String phone, String email) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("name", name); contentValues.put("phone", phone); contentValues.put("email", email); db.update("contacts", contentValues, "id = ? ", new String[] { Integer.toString(id) } ); return true; } public Integer deleteContact (Integer id) { SQLiteDatabase db = this.getWritableDatabase(); return db.delete("contacts", "id = ? ", new String[] { Integer.toString(id) }); } public ArrayList<String> getAllCotacts() { ArrayList<String> array_list = new ArrayList<String>(); //hp = new HashMap(); SQLiteDatabase db = this.getReadableDatabase(); Cursor res = db.rawQuery( "select * from contacts", null ); res.moveToFirst(); while(res.isAfterLast() == false){ array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME))); res.moveToNext(); } return array_list; } }  
      سپس واسط کاربری گرافیکی Layout را طراحی میکنیم  activity_main.xml
      <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/scrollView1" android:layout_width="match_parent" android:layout_height="wrap_content" tools:context=".MainActivity" > <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="370dp"> <EditText android:id="@+id/editTextName" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="text" > </EditText> <EditText android:id="@+id/editTextEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="22dp" android:ems="10" android:inputType="textEmailAddress" /> <EditText android:id="@+id/edit_phone" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="28dp" android:text="@string/save" /> </LinearLayout> </ScrollView>
      برای ذخیره اطلاعات در دیتابیس.میبایستی در اکتیویتی دیتابیس را new کنید تا بتوانید که اطلاعات را در دیتابیس فراخوانی کنید
      افزودن اطلاعات :
      public class MainActivity extends AppCompatActivity { DBHelper mydb; EditText editTextName,editTextEmail,edit_phone; Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editTextName=(EditText)findViewById(R.id.editTextName); editTextEmail=(EditText)findViewById(R.id.editTextEmail); edit_phone=(EditText)findViewById(R.id.edit_phone); button1=(Button)findViewById(R.id.button1); mydb = new DBHelper(this); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name=editTextName.getText().toString(); String email=editTextEmail.getText().toString(); String phone=edit_phone.getText().toString(); mydb.insertContact(name,email,phone); } }); }  
      بزودی آموزش تکمیل میگردد.
       
      دوره آموزشی اندروید
      http://android-learn.ir/online-learning/android-development-training/guruPrograms/1-android-programming/2-programming-mobile-applications-for-android
       
       
       
       
       
       
       
  • فایل

×
×
  • اضافه کردن...