안드로이드 스튜디오 구글맵 캡쳐..
조회수 1479회
구글맵을 띄우고 캡쳐를 하려고 합니다.
구글맵은 잘나오는데 캡쳐를 누르면 앱이 튕기네요..
혹시 이유를 알수있을까요? 휴대폰기종은 노트8입니다.
아래는 MainActivity 내용입니다
package com.cookandroid.cookmap;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.GoogleMap.SnapshotReadyCallback;
import android.content.Intent;
import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import java.io.FileOutputStream;
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
GoogleMap gMap;
MapFragment mapFrag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("Google map");
mapFrag = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
mapFrag.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap map) {
gMap = map;
}
public void CaptureMapScreen() {
SnapshotReadyCallback callback = new SnapshotReadyCallback() {
Bitmap bitmap;
@Override
public void onSnapshotReady(Bitmap snapshot) {
bitmap = snapshot;
try {
FileOutputStream out = new FileOutputStream("/storage/emulated/0/1.png");
bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
} catch (Exception e) {
e.printStackTrace();
}
}
};
gMap.snapshot(callback);
Intent intent = new Intent(this, SubActivity.class);
startActivity(intent);
}
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, 1, 0, "screen capture");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
try {
CaptureMapScreen();
} catch (Exception e) {
e.printStackTrace();
}
}
return super.onOptionsItemSelected(item);
}
}
퍼미션은
uses-permission android:name="android.permission.INTERNET" />
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
uses-permission android:name="android.permission.READ_PHONE_STATE" />
이렇게 추가했습니다. ( 앞부분 < 는 추가하면 보이지 않아서 빼고 올렸습니다....ㅠ)
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력