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

조회수 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" />

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

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)