Устройство работает на Android 4.4. Приложение будет системным и будет подписан тем же сертификатом что и система.
Есть внешний источник GPS(свой протокол обмена, я получаю через протокол данные о координатах). p.s. На устройстве нету своего GPS приемника(не будет антены, а механизм в андроиде заложен)!
Как я могу сделать источником GPS свой некий метод?
Например, в приложении будет такое:
void getGps(){
gps = call();
deviceGPS = gps;// какое то чудо, и устройство подумало что со спутников GPS пришли новые данные.
}
Что та типа Fake GPS, но работать должно без всяких манипуляций с устройством и без ROOT
Сейчас использую такой вариант(но опять таки есть необходимость использовать режим разработчика)
public class FakeLocation {
private LocationManager locMgr;
private Context appContext;
private static FakeLocation singleton;
private FakeLocation(Context context){
singleton = this;
this.appContext = context.getApplicationContext();
this.locMgr = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
if (Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, 0) == 0){
if (BuildConfig.DEBUG) Toast.makeText(context, "Включаем MOCK", Toast.LENGTH_SHORT).show();
Settings.Secure.putInt(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, 1);
}
}
public static FakeLocation getSingleton(){
if (singleton == null) new FakeLocation(ThisApplication.getSingleton());
return singleton;
}
public void setMockLocation(double latitude, double longitude, float accuracy) {
if (Settings.Secure.getInt(this.appContext.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, 0) == 0){
return;
}
locMgr.addTestProvider (LocationManager.GPS_PROVIDER,
"requiresNetwork" == "",
"requiresSatellite" == "",
"requiresCell" == "",
"hasMonetaryCost" == "",
"supportsAltitude" == "",
"supportsSpeed" == "",
"supportsBearing" == "",
android.location.Criteria.POWER_LOW,
android.location.Criteria.ACCURACY_FINE);
Location newLocation = new Location(LocationManager.GPS_PROVIDER);
newLocation.setLatitude(latitude);
newLocation.setLongitude(longitude);
newLocation.setAccuracy(accuracy);
newLocation.setAltitude(0);
newLocation.setTime(System.currentTimeMillis());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
newLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
}
locMgr.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true);
locMgr.setTestProviderStatus(LocationManager.GPS_PROVIDER,
LocationProvider.AVAILABLE,null, System.currentTimeMillis());
locMgr.setTestProviderLocation(LocationManager.GPS_PROVIDER, newLocation);}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть таблица Report и таблица Recipe, которые имеют стандартную всязь один к многим, те
Как считывать нажатия кнопок в виртуальной клавиатуре телефона? К примеру я нажал "Enter" и появился тоаст "Вы нажали ентер"Либо нажал на какой-нибудь...