Android Studio でプロジェクトをコピーする&GPSの不具合を修正(アンドロイド地図アプリの開発 その12) 

前回の記事で、実機で検証するとエミュレータでは発生しないエラーが発生し、原因はGPS周りの設定にありそうだと書きました。
alasixosaka.hatenablog.com
本当のところはよくわかっていないのですが、とりあえずエラーが出ないように対処しました。やったこと自体は大したことではなく、端末のGPSがOffになっているときに、GPSをOnにするように促すために、GPSの設定画面を表示するようにしただけです。あまり真面目に検証していないので、本当のこれがエラーの原因だったか定かでないですが、端末のGPSをOffの状態とOnの状態それぞれでエラーが出ないことを確認しました。
やったことは、OvarlayMapViewer.javaのcheckPermissionの処理の部分にIntentを発行して、GPS設定画面を表示させるようにしただけです。具体的には下記のリストのelse{ }の部分です。

    private void checkPermission() {
        if (locationManager != null && locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            Log.d("debug", "location manager Enabled");
        } else {
            // GPSを設定するように促す
            Intent settingsIntent =
                    new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(settingsIntent);
            Log.d("debug", "not gpsEnable, startActivity");
        }


        if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1001);
        }

    }

実機でGPSをOnにして、アプリのGPS設定もOnにすると、GPSが機能して、日本地図上に現在地が表示されました。
更に、以前やった方法と同じく、地磁気センサーと加速度センサーを使って方位と地図の方向を合わせるようにした。
alasixosaka.hatenablog.com

近所の公園でテストしたところ、うまく機能することを確認しました。

f:id:alasixOsaka:20190929094938p:plain
近所の今城塚古墳で動かしてみた。現在地は青丸の位置

と、ここまででは短すぎて面白くないので、今回はAndroid Studioでプロジェクトをコピーする方法を備忘録を兼ねて書いておきます。
何故この機能がないのか不思議なのですが、Android Studio自身にはプロジェクトの複製を作る方法がありません。ですので、自分で何らかの方法でコピーを作る必要があるのですが、ちょっと複雑な操作を必要とします。
色々試してうまくいった方法を書いておきます。
Android StudioのVersionは3.4です。
今回は、GPSの不具合を修正したプロジェクトmpf_rotation2から新たにmpf_rotation3というプロジェクトを作ります。

まず、エクスプローラーでコピーしたいプロジェクトをフォルダごとコピーします。コピーしたら適当な名前にリネームします(今回の場合だとmpf_rotation3)。
Android Studioを起動し、コピーしたプロジェクト(mpf_rotation3)を開きます。
そして、Build -> Clean Project を実行
AndroidManifest.xmlを修正。
Package=”xxxx”のアプリケーション名を先ほどリネームした名前(mpf_rotation3)に変更。
次にBuild Gradleを修正。defaultConfigのApplicationIDをリネームした名前(mpf_rotation3)に変更。Sync Nowを実行。

左ペインのapp >> java >> com.example.XXXX(今回の場合はcom.example.mpf_rotation2)を右クリックし、Refactor->Renameを選択。
複数のディレクトリがあると警告が出る場合は、Rename Packageを選択。
f:id:alasixOsaka:20190917200249j:plain
リネームする名前(mpf_rotation3)を入力してRefactorを選択する。
f:id:alasixOsaka:20190917200310j:plain
下の方に何か表示が出るので、Do Refactorを選択する。
f:id:alasixOsaka:20190917200323j:plain
最後に、Build ー> Rebuild Projectを実行する。

自分の場合はこれでうまくいきました。

参考にしたサイト
[Android] GPSで位置情報を取得するアプリを作る
Android Studioプロジェクトのコピーを作る話 | kunimiyasoft
android studio プロジェクト名の変更