実現したいこと
AndroidStudioを使用して現在位置の緯度と経度を画面に出力するアプリを作成しています。しかしビルド、実行ともに成功しているのですがエミュレータに実行結果が反映されません。
つまり、エミュレータが真っ白になります。画面上部のLTEなどの表記はでています。
参考書を見ながらやっているのですがうまくいきません。
参考書の実行結果
LocationEx>
緯度:xx.xxxxxxx
経度:yyy.yyyyyyy
###ソースコード
LocationEx
1{ 2 public final static String BR = System.getProperty("line.separator"); 3 private final static int WC = ViewGroup.LayoutParams.WRAP_CONTENT; 4 private final static String[] PERMISSIONS = { 5 Manifest.permission.ACCESS_COARSE_LOCATION, 6 Manifest.permission.ACCESS_FINE_LOCATION}; 7 private final static int REQUEST_PERMISSION = 1; 8 private TextView textView;//テキストビュー 9 private LocationManager manager; 10 11 @Override 12 public void onCreate(Bundle bundle){ 13 super.onCreate(bundle); 14 requestWindowFeature(Window.FEATURE_NO_TITLE); 15 16 //レイアウトの作成 17 LinearLayout layout = new LinearLayout(this); 18 layout.setBackgroundColor(Color.WHITE); 19 layout.setOrientation(LinearLayout.VERTICAL); 20 21 //テキストビューの生成 22 textView = new TextView(this); 23 textView.setText("LocationEx"); 24 textView.setTextSize(24); 25 textView.setTextColor(Color.BLACK); 26 textView.setLayoutParams(new LinearLayout.LayoutParams(WC,WC)); 27 28 //ロケーションマネージャーの取得 29 manager 30 =(LocationManager)getSystemService(Context.LOCATION_SERVICE); 31 32 //ユーザー利用許可のチェック 33 checkPermissions(); 34 35 } 36 37 //アクティビティ再開時に呼ばれる 38 @Override 39 public void onResume() { 40 super.onResume(); 41 42 //位置情報更新の開始 43 setLocationUpdateEnabled(true); 44 } 45 46 //アクティビティ一時停止時に呼ばれる 47 @Override 48 public void onPause() { 49 super.onPause(); 50 51 //位置情報更新の開始 52 setLocationUpdateEnabled(false); 53 } 54 55 //位置情報を通知する時に呼ばれる 56 public void onLocationChanged(Location location) { 57 //緯度と経度の取得 58 textView.setText(String.format("LocationEx>%s緯度:%s%s経度:%s", BR, location.getLatitude(), BR, location.getLongitude())); 59 } 60 61 //位置情報取得有効化を通知する時に呼ばれる 62 public void onProviderEnabled(String provider) { 63 } 64 65 //位置情報取得無効化を通知する時に呼ばれる 66 public void onProviderDisabled(String provider) { 67 } 68 69 //位置情報更新の開始・停止 70 private void setLocationUpdateEnabled(boolean enabled) { 71 //パーミッションのチェック 72 if (isGranted()) { 73 return; 74 } 75 76 //ロケーションマネージャの登録と解除 77 try { 78 if (enabled) { 79 manager.requestLocationUpdates( 80 LocationManager.NETWORK_PROVIDER, 0, 0, this); 81 } else { 82 manager.removeUpdates(this); 83 } 84 } catch (SecurityException e) { 85 e.printStackTrace(); 86 } 87 } 88 89 //ユーザーの利用許可のチェック 90 private void checkPermissions() { 91 //未許可 92 if(!isGranted()) { 93 //許可ダイアログの表示 94 ActivityCompat.requestPermissions(this, PERMISSIONS, 95 REQUEST_PERMISSION); 96 } 97 } 98 99 //ユーザーの利用許可が済かどうかの取得 100 private boolean isGranted() 101 { 102 for (String permission : PERMISSIONS) { 103 if (ContextCompat.checkSelfPermission(LocationEx.this, permission) != 104 PackageManager.PERMISSION_GRANTED) { 105 return false; 106 } 107 } 108 return true; 109 } 110 111 //許可ダイアログ選択時に呼ばれる 112 @Override 113 public void onRequestPermissionsResult(int requestCode, 114 String[] permissions, int[] results) { 115 if (requestCode == REQUEST_PERMISSION) { 116 //未許可 117 if (isGranted()) textView.setText(String.format("LocationEx>%s位置情報の取得が未許可です", BR)); 118 } else{ 119 super.onRequestPermissionsResult( 120 requestCode, permissions, results); 121 } 122 } 123}
AndroidManifest
1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="net.npaka.locationex"> 4 5 6 <uses-permission android:name="android.permission.INTERNET"/> 7 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 8 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 9 10 <application 11 android:allowBackup="false" 12 android:icon="@mipmap/ic_launcher" 13 android:label="@string/app_name" 14 android:supportsRtl="false" 15 android:theme="@style/Theme.LocationEx" 16 android:fullBackupContent="@xml/backup_descriptor"> 17 18 <activity 19 android:label="@string/app_name" 20 android:name=".LocationEx"> 21 <intent-filter> 22 <action android:name="android.intent.action.MAIN" /> 23 <category android:name="android.intent.category.LAUNCHER" /> 24 </intent-filter> 25 </activity> 26 </application> 27 28</manifest>
補足
開発環境はAndroidStudio4.1、Windows10、Android Gradle Plugin Ver4.1.0、Gradle Ver6.5.1、エミュレーターはPixel 3a_API30_x86、使用言語はJavaです。その他質問などございましたらどうぞお聞きください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/19 14:34
2020/11/19 15:06
2020/11/19 16:02
2020/11/21 13:08