try to guess inital location in ShareLocation based on sim card
This commit is contained in:
parent
ae9bfe1643
commit
8f27a177b0
|
@ -173,7 +173,6 @@ public final class Config {
|
|||
public static final class Map {
|
||||
public final static double INITIAL_ZOOM_LEVEL = 4;
|
||||
public final static double FINAL_ZOOM_LEVEL = 15;
|
||||
public final static GeoPoint INITIAL_POS = new GeoPoint(33.805278, -84.171389);
|
||||
public final static int MY_LOCATION_INDICATOR_SIZE = 10;
|
||||
public final static int MY_LOCATION_INDICATOR_OUTLINE_SIZE = 3;
|
||||
public final static long LOCATION_FIX_TIME_DELTA = 1000 * 10; // ms
|
||||
|
|
|
@ -54,7 +54,7 @@ public class AttachFileToConversationRunnable implements Runnable, MediaTranscod
|
|||
}
|
||||
|
||||
boolean isVideoMessage() {
|
||||
return this.isVideoMessage;
|
||||
return this.isVideoMessage && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2;
|
||||
}
|
||||
|
||||
private void processAsFile() {
|
||||
|
@ -160,7 +160,7 @@ public class AttachFileToConversationRunnable implements Runnable, MediaTranscod
|
|||
|
||||
@Override
|
||||
public void run() {
|
||||
if (isVideoMessage && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
|
||||
if (this.isVideoMessage()) {
|
||||
try {
|
||||
processAsVideo();
|
||||
} catch (FileNotFoundException e) {
|
||||
|
|
|
@ -39,6 +39,7 @@ import eu.siacs.conversations.services.QuickConversationsService;
|
|||
import eu.siacs.conversations.ui.util.LocationHelper;
|
||||
import eu.siacs.conversations.ui.widget.Marker;
|
||||
import eu.siacs.conversations.ui.widget.MyLocation;
|
||||
import eu.siacs.conversations.utils.LocationProvider;
|
||||
import eu.siacs.conversations.utils.ThemeHelper;
|
||||
|
||||
public abstract class LocationActivity extends ActionBarActivity implements LocationListener {
|
||||
|
|
|
@ -22,6 +22,7 @@ import eu.siacs.conversations.databinding.ActivityShareLocationBinding;
|
|||
import eu.siacs.conversations.ui.util.LocationHelper;
|
||||
import eu.siacs.conversations.ui.widget.Marker;
|
||||
import eu.siacs.conversations.ui.widget.MyLocation;
|
||||
import eu.siacs.conversations.utils.LocationProvider;
|
||||
import eu.siacs.conversations.utils.ThemeHelper;
|
||||
|
||||
public class ShareLocationActivity extends LocationActivity implements LocationListener {
|
||||
|
@ -55,7 +56,7 @@ public class ShareLocationActivity extends LocationActivity implements LocationL
|
|||
this.binding = DataBindingUtil.setContentView(this,R.layout.activity_share_location);
|
||||
setSupportActionBar((Toolbar) binding.toolbar);
|
||||
configureActionBar(getSupportActionBar());
|
||||
setupMapView(binding.map, Config.Map.INITIAL_POS);
|
||||
setupMapView(binding.map, LocationProvider.getGeoPoint(this));
|
||||
|
||||
this.binding.cancelButton.setOnClickListener(view -> {
|
||||
setResult(RESULT_CANCELED);
|
||||
|
|
|
@ -30,11 +30,12 @@ import eu.siacs.conversations.ui.util.LocationHelper;
|
|||
import eu.siacs.conversations.ui.util.UriHelper;
|
||||
import eu.siacs.conversations.ui.widget.Marker;
|
||||
import eu.siacs.conversations.ui.widget.MyLocation;
|
||||
import eu.siacs.conversations.utils.LocationProvider;
|
||||
|
||||
|
||||
public class ShowLocationActivity extends LocationActivity implements LocationListener {
|
||||
|
||||
private GeoPoint loc = Config.Map.INITIAL_POS;
|
||||
private GeoPoint loc = LocationProvider.FALLBACK;
|
||||
private ActivityShowLocationBinding binding;
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
package eu.siacs.conversations.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Log;
|
||||
|
||||
import org.osmdroid.util.GeoPoint;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.Locale;
|
||||
|
||||
import eu.siacs.conversations.Config;
|
||||
import eu.siacs.conversations.R;
|
||||
|
||||
public class LocationProvider {
|
||||
|
||||
public static final GeoPoint FALLBACK = new GeoPoint(0.0,0.0);
|
||||
|
||||
public static String getUserCountry(Context context) {
|
||||
try {
|
||||
final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
final String simCountry = tm.getSimCountryIso();
|
||||
if (simCountry != null && simCountry.length() == 2) { // SIM country code is available
|
||||
return simCountry.toUpperCase(Locale.US);
|
||||
} else if (tm.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA) { // device is not 3G (would be unreliable)
|
||||
String networkCountry = tm.getNetworkCountryIso();
|
||||
if (networkCountry != null && networkCountry.length() == 2) { // network country code is available
|
||||
return networkCountry.toUpperCase(Locale.US);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// fallthrough
|
||||
}
|
||||
Locale locale = Locale.getDefault();
|
||||
return locale.getCountry();
|
||||
}
|
||||
|
||||
public static GeoPoint getGeoPoint(Context context) {
|
||||
return getGeoPoint(context, getUserCountry(context));
|
||||
}
|
||||
|
||||
|
||||
public static synchronized GeoPoint getGeoPoint(Context context, String country) {
|
||||
try {
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(context.getResources().openRawResource(R.raw.countries)));
|
||||
String line;
|
||||
while((line = reader.readLine()) != null) {
|
||||
String[] parts = line.split("\\s+",4);
|
||||
if (parts.length == 4) {
|
||||
if (country.equalsIgnoreCase(parts[0])) {
|
||||
try {
|
||||
return new GeoPoint(Double.parseDouble(parts[1]), Double.parseDouble(parts[2]));
|
||||
} catch (NumberFormatException e) {
|
||||
return FALLBACK;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Log.d(Config.LOGTAG,"unable to parse line="+line);
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Log.d(Config.LOGTAG,e.getMessage());
|
||||
}
|
||||
return FALLBACK;
|
||||
}
|
||||
|
||||
}
|
245
src/main/res/raw/countries
Normal file
245
src/main/res/raw/countries
Normal file
|
@ -0,0 +1,245 @@
|
|||
AD 42.546245 1.601554 Andorra
|
||||
AE 23.424076 53.847818 United Arab Emirates
|
||||
AF 33.93911 67.709953 Afghanistan
|
||||
AG 17.060816 -61.796428 Antigua and Barbuda
|
||||
AI 18.220554 -63.068615 Anguilla
|
||||
AL 41.153332 20.168331 Albania
|
||||
AM 40.069099 45.038189 Armenia
|
||||
AN 12.226079 -69.060087 Netherlands Antilles
|
||||
AO -11.202692 17.873887 Angola
|
||||
AQ -75.250973 -0.071389 Antarctica
|
||||
AR -38.416097 -63.616672 Argentina
|
||||
AS -14.270972 -170.132217 American Samoa
|
||||
AT 47.516231 14.550072 Austria
|
||||
AU -25.274398 133.775136 Australia
|
||||
AW 12.52111 -69.968338 Aruba
|
||||
AZ 40.143105 47.576927 Azerbaijan
|
||||
BA 43.915886 17.679076 Bosnia and Herzegovina
|
||||
BB 13.193887 -59.543198 Barbados
|
||||
BD 23.684994 90.356331 Bangladesh
|
||||
BE 50.503887 4.469936 Belgium
|
||||
BF 12.238333 -1.561593 Burkina Faso
|
||||
BG 42.733883 25.48583 Bulgaria
|
||||
BH 25.930414 50.637772 Bahrain
|
||||
BI -3.373056 29.918886 Burundi
|
||||
BJ 9.30769 2.315834 Benin
|
||||
BM 32.321384 -64.75737 Bermuda
|
||||
BN 4.535277 114.727669 Brunei
|
||||
BO -16.290154 -63.588653 Bolivia
|
||||
BR -14.235004 -51.92528 Brazil
|
||||
BS 25.03428 -77.39628 Bahamas
|
||||
BT 27.514162 90.433601 Bhutan
|
||||
BV -54.423199 3.413194 Bouvet Island
|
||||
BW -22.328474 24.684866 Botswana
|
||||
BY 53.709807 27.953389 Belarus
|
||||
BZ 17.189877 -88.49765 Belize
|
||||
CA 56.130366 -106.346771 Canada
|
||||
CC -12.164165 96.870956 Cocos [Keeling] Islands
|
||||
CD -4.038333 21.758664 Congo [DRC]
|
||||
CF 6.611111 20.939444 Central African Republic
|
||||
CG -0.228021 15.827659 Congo [Republic]
|
||||
CH 46.818188 8.227512 Switzerland
|
||||
CI 7.539989 -5.54708 Côte d'Ivoire
|
||||
CK -21.236736 -159.777671 Cook Islands
|
||||
CL -35.675147 -71.542969 Chile
|
||||
CM 7.369722 12.354722 Cameroon
|
||||
CN 35.86166 104.195397 China
|
||||
CO 4.570868 -74.297333 Colombia
|
||||
CR 9.748917 -83.753428 Costa Rica
|
||||
CU 21.521757 -77.781167 Cuba
|
||||
CV 16.002082 -24.013197 Cape Verde
|
||||
CX -10.447525 105.690449 Christmas Island
|
||||
CY 35.126413 33.429859 Cyprus
|
||||
CZ 49.817492 15.472962 Czech Republic
|
||||
DE 51.165691 10.451526 Germany
|
||||
DJ 11.825138 42.590275 Djibouti
|
||||
DK 56.26392 9.501785 Denmark
|
||||
DM 15.414999 -61.370976 Dominica
|
||||
DO 18.735693 -70.162651 Dominican Republic
|
||||
DZ 28.033886 1.659626 Algeria
|
||||
EC -1.831239 -78.183406 Ecuador
|
||||
EE 58.595272 25.013607 Estonia
|
||||
EG 26.820553 30.802498 Egypt
|
||||
EH 24.215527 -12.885834 Western Sahara
|
||||
ER 15.179384 39.782334 Eritrea
|
||||
ES 40.463667 -3.74922 Spain
|
||||
ET 9.145 40.489673 Ethiopia
|
||||
FI 61.92411 25.748151 Finland
|
||||
FJ -16.578193 179.414413 Fiji
|
||||
FK -51.796253 -59.523613 Falkland Islands [Islas Malvinas]
|
||||
FM 7.425554 150.550812 Micronesia
|
||||
FO 61.892635 -6.911806 Faroe Islands
|
||||
FR 46.227638 2.213749 France
|
||||
GA -0.803689 11.609444 Gabon
|
||||
GB 55.378051 -3.435973 United Kingdom
|
||||
GD 12.262776 -61.604171 Grenada
|
||||
GE 42.315407 43.356892 Georgia
|
||||
GF 3.933889 -53.125782 French Guiana
|
||||
GG 49.465691 -2.585278 Guernsey
|
||||
GH 7.946527 -1.023194 Ghana
|
||||
GI 36.137741 -5.345374 Gibraltar
|
||||
GL 71.706936 -42.604303 Greenland
|
||||
GM 13.443182 -15.310139 Gambia
|
||||
GN 9.945587 -9.696645 Guinea
|
||||
GP 16.995971 -62.067641 Guadeloupe
|
||||
GQ 1.650801 10.267895 Equatorial Guinea
|
||||
GR 39.074208 21.824312 Greece
|
||||
GS -54.429579 -36.587909 South Georgia and the South Sandwich Islands
|
||||
GT 15.783471 -90.230759 Guatemala
|
||||
GU 13.444304 144.793731 Guam
|
||||
GW 11.803749 -15.180413 Guinea-Bissau
|
||||
GY 4.860416 -58.93018 Guyana
|
||||
GZ 31.354676 34.308825 Gaza Strip
|
||||
HK 22.396428 114.109497 Hong Kong
|
||||
HM -53.08181 73.504158 Heard Island and McDonald Islands
|
||||
HN 15.199999 -86.241905 Honduras
|
||||
HR 45.1 15.2 Croatia
|
||||
HT 18.971187 -72.285215 Haiti
|
||||
HU 47.162494 19.503304 Hungary
|
||||
ID -0.789275 113.921327 Indonesia
|
||||
IE 53.41291 -8.24389 Ireland
|
||||
IL 31.046051 34.851612 Israel
|
||||
IM 54.236107 -4.548056 Isle of Man
|
||||
IN 20.593684 78.96288 India
|
||||
IO -6.343194 71.876519 British Indian Ocean Territory
|
||||
IQ 33.223191 43.679291 Iraq
|
||||
IR 32.427908 53.688046 Iran
|
||||
IS 64.963051 -19.020835 Iceland
|
||||
IT 41.87194 12.56738 Italy
|
||||
JE 49.214439 -2.13125 Jersey
|
||||
JM 18.109581 -77.297508 Jamaica
|
||||
JO 30.585164 36.238414 Jordan
|
||||
JP 36.204824 138.252924 Japan
|
||||
KE -0.023559 37.906193 Kenya
|
||||
KG 41.20438 74.766098 Kyrgyzstan
|
||||
KH 12.565679 104.990963 Cambodia
|
||||
KI -3.370417 -168.734039 Kiribati
|
||||
KM -11.875001 43.872219 Comoros
|
||||
KN 17.357822 -62.782998 Saint Kitts and Nevis
|
||||
KP 40.339852 127.510093 North Korea
|
||||
KR 35.907757 127.766922 South Korea
|
||||
KW 29.31166 47.481766 Kuwait
|
||||
KY 19.513469 -80.566956 Cayman Islands
|
||||
KZ 48.019573 66.923684 Kazakhstan
|
||||
LA 19.85627 102.495496 Laos
|
||||
LB 33.854721 35.862285 Lebanon
|
||||
LC 13.909444 -60.978893 Saint Lucia
|
||||
LI 47.166 9.555373 Liechtenstein
|
||||
LK 7.873054 80.771797 Sri Lanka
|
||||
LR 6.428055 -9.429499 Liberia
|
||||
LS -29.609988 28.233608 Lesotho
|
||||
LT 55.169438 23.881275 Lithuania
|
||||
LU 49.815273 6.129583 Luxembourg
|
||||
LV 56.879635 24.603189 Latvia
|
||||
LY 26.3351 17.228331 Libya
|
||||
MA 31.791702 -7.09262 Morocco
|
||||
MC 43.750298 7.412841 Monaco
|
||||
MD 47.411631 28.369885 Moldova
|
||||
ME 42.708678 19.37439 Montenegro
|
||||
MG -18.766947 46.869107 Madagascar
|
||||
MH 7.131474 171.184478 Marshall Islands
|
||||
MK 41.608635 21.745275 Macedonia [FYROM]
|
||||
ML 17.570692 -3.996166 Mali
|
||||
MM 21.913965 95.956223 Myanmar [Burma]
|
||||
MN 46.862496 103.846656 Mongolia
|
||||
MO 22.198745 113.543873 Macau
|
||||
MP 17.33083 145.38469 Northern Mariana Islands
|
||||
MQ 14.641528 -61.024174 Martinique
|
||||
MR 21.00789 -10.940835 Mauritania
|
||||
MS 16.742498 -62.187366 Montserrat
|
||||
MT 35.937496 14.375416 Malta
|
||||
MU -20.348404 57.552152 Mauritius
|
||||
MV 3.202778 73.22068 Maldives
|
||||
MW -13.254308 34.301525 Malawi
|
||||
MX 23.634501 -102.552784 Mexico
|
||||
MY 4.210484 101.975766 Malaysia
|
||||
MZ -18.665695 35.529562 Mozambique
|
||||
NA -22.95764 18.49041 Namibia
|
||||
NC -20.904305 165.618042 New Caledonia
|
||||
NE 17.607789 8.081666 Niger
|
||||
NF -29.040835 167.954712 Norfolk Island
|
||||
NG 9.081999 8.675277 Nigeria
|
||||
NI 12.865416 -85.207229 Nicaragua
|
||||
NL 52.132633 5.291266 Netherlands
|
||||
NO 60.472024 8.468946 Norway
|
||||
NP 28.394857 84.124008 Nepal
|
||||
NR -0.522778 166.931503 Nauru
|
||||
NU -19.054445 -169.867233 Niue
|
||||
NZ -40.900557 174.885971 New Zealand
|
||||
OM 21.512583 55.923255 Oman
|
||||
PA 8.537981 -80.782127 Panama
|
||||
PE -9.189967 -75.015152 Peru
|
||||
PF -17.679742 -149.406843 French Polynesia
|
||||
PG -6.314993 143.95555 Papua New Guinea
|
||||
PH 12.879721 121.774017 Philippines
|
||||
PK 30.375321 69.345116 Pakistan
|
||||
PL 51.919438 19.145136 Poland
|
||||
PM 46.941936 -56.27111 Saint Pierre and Miquelon
|
||||
PN -24.703615 -127.439308 Pitcairn Islands
|
||||
PR 18.220833 -66.590149 Puerto Rico
|
||||
PS 31.952162 35.233154 Palestinian Territories
|
||||
PT 39.399872 -8.224454 Portugal
|
||||
PW 7.51498 134.58252 Palau
|
||||
PY -23.442503 -58.443832 Paraguay
|
||||
QA 25.354826 51.183884 Qatar
|
||||
RE -21.115141 55.536384 Réunion
|
||||
RO 45.943161 24.96676 Romania
|
||||
RS 44.016521 21.005859 Serbia
|
||||
RU 61.52401 105.318756 Russia
|
||||
RW -1.940278 29.873888 Rwanda
|
||||
SA 23.885942 45.079162 Saudi Arabia
|
||||
SB -9.64571 160.156194 Solomon Islands
|
||||
SC -4.679574 55.491977 Seychelles
|
||||
SD 12.862807 30.217636 Sudan
|
||||
SE 60.128161 18.643501 Sweden
|
||||
SG 1.352083 103.819836 Singapore
|
||||
SH -24.143474 -10.030696 Saint Helena
|
||||
SI 46.151241 14.995463 Slovenia
|
||||
SJ 77.553604 23.670272 Svalbard and Jan Mayen
|
||||
SK 48.669026 19.699024 Slovakia
|
||||
SL 8.460555 -11.779889 Sierra Leone
|
||||
SM 43.94236 12.457777 San Marino
|
||||
SN 14.497401 -14.452362 Senegal
|
||||
SO 5.152149 46.199616 Somalia
|
||||
SR 3.919305 -56.027783 Suriname
|
||||
ST 0.18636 6.613081 São Tomé and Príncipe
|
||||
SV 13.794185 -88.89653 El Salvador
|
||||
SY 34.802075 38.996815 Syria
|
||||
SZ -26.522503 31.465866 Swaziland
|
||||
TC 21.694025 -71.797928 Turks and Caicos Islands
|
||||
TD 15.454166 18.732207 Chad
|
||||
TF -49.280366 69.348557 French Southern Territories
|
||||
TG 8.619543 0.824782 Togo
|
||||
TH 15.870032 100.992541 Thailand
|
||||
TJ 38.861034 71.276093 Tajikistan
|
||||
TK -8.967363 -171.855881 Tokelau
|
||||
TL -8.874217 125.727539 Timor-Leste
|
||||
TM 38.969719 59.556278 Turkmenistan
|
||||
TN 33.886917 9.537499 Tunisia
|
||||
TO -21.178986 -175.198242 Tonga
|
||||
TR 38.963745 35.243322 Turkey
|
||||
TT 10.691803 -61.222503 Trinidad and Tobago
|
||||
TV -7.109535 177.64933 Tuvalu
|
||||
TW 23.69781 120.960515 Taiwan
|
||||
TZ -6.369028 34.888822 Tanzania
|
||||
UA 48.379433 31.16558 Ukraine
|
||||
UG 1.373333 32.290275 Uganda
|
||||
UM U.S. Minor Outlying Islands
|
||||
US 37.09024 -95.712891 United States
|
||||
UY -32.522779 -55.765835 Uruguay
|
||||
UZ 41.377491 64.585262 Uzbekistan
|
||||
VA 41.902916 12.453389 Vatican City
|
||||
VC 12.984305 -61.287228 Saint Vincent and the Grenadines
|
||||
VE 6.42375 -66.58973 Venezuela
|
||||
VG 18.420695 -64.639968 British Virgin Islands
|
||||
VI 18.335765 -64.896335 U.S. Virgin Islands
|
||||
VN 14.058324 108.277199 Vietnam
|
||||
VU -15.376706 166.959158 Vanuatu
|
||||
WF -13.768752 -177.156097 Wallis and Futuna
|
||||
WS -13.759029 -172.104629 Samoa
|
||||
XK 42.602636 20.902977 Kosovo
|
||||
YE 15.552727 48.516388 Yemen
|
||||
YT -12.8275 45.166244 Mayotte
|
||||
ZA -30.559482 22.937506 South Africa
|
||||
ZM -13.133897 27.849332 Zambia
|
||||
ZW -19.015438 29.154857 Zimbabwe
|
|
@ -22,25 +22,6 @@ public class PhoneNumberUtilWrapper {
|
|||
return locale.getDisplayCountry();
|
||||
}
|
||||
|
||||
public static String getUserCountry(Context context) {
|
||||
try {
|
||||
final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
final String simCountry = tm.getSimCountryIso();
|
||||
if (simCountry != null && simCountry.length() == 2) { // SIM country code is available
|
||||
return simCountry.toUpperCase(Locale.US);
|
||||
} else if (tm.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA) { // device is not 3G (would be unreliable)
|
||||
String networkCountry = tm.getNetworkCountryIso();
|
||||
if (networkCountry != null && networkCountry.length() == 2) { // network country code is available
|
||||
return networkCountry.toUpperCase(Locale.US);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// fallthrough
|
||||
}
|
||||
Locale locale = Locale.getDefault();
|
||||
return locale.getCountry();
|
||||
}
|
||||
|
||||
public static String toFormattedPhoneNumber(Context context, Jid jid) {
|
||||
try {
|
||||
return getInstance(context).format(toPhoneNumber(context, jid), PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL);
|
||||
|
@ -54,7 +35,7 @@ public class PhoneNumberUtilWrapper {
|
|||
}
|
||||
|
||||
public static String normalize(Context context, String input) throws IllegalArgumentException, NumberParseException {
|
||||
final Phonenumber.PhoneNumber number = getInstance(context).parse(input, getUserCountry(context));
|
||||
final Phonenumber.PhoneNumber number = getInstance(context).parse(input, LocationProvider.getUserCountry(context));
|
||||
if (!getInstance(context).isValidNumber(number)) {
|
||||
throw new IllegalArgumentException("Not a valid phone number");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue