안드로이드 스튜디오 구글맵 캡쳐..


구글맵을 띄우고 캡쳐를 하려고 합니다.

구글맵은 잘나오는데 캡쳐를 누르면 앱이 튕기네요..

혹시 이유를 알수있을까요? 휴대폰기종은 노트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" />

이렇게 추가했습니다. ( 앞부분 < 는 추가하면 보이지 않아서 빼고 올렸습니다....ㅠ)

  • 2017년 12월 05일에 작성됨

조회수 62


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close