相关疑难解决方法(0)

移动MapFragment(SurfaceView)会导致黑色背景闪烁

我正在尝试实施新的Android Google Maps API(v2).然而,它与SlidingMenu似乎并不顺利.如您所知,MapFragment实施基于SurfaceView.问题是SurfaceView它不喜欢移动它 - 我的意思是把它放在可移动的视图中:

移动它时,它会在其像素最初放置的位置留下黑洞.它看起来像这样.

通过在其上指定透明背景SurfaceView或者甚至在其上放置透明可以部分地解决该问题View.我只是无法想象,如果只是对我来说结果是不可接受的,或者我有一个不同的问题,使它看起来如何.

要查看它的外观,请观看此视频.

(对不起质量,但无论如何都可以轻松看到问题)

当打开时拉开正常的列表视图(橙色屏幕)时SlidingMenu,动画很流畅.但是一MapFragment出现,地图上就会出现一些奇怪的刷新/闪烁/同步问题.

在HTC One S和三星Galaxy ACE上测试过.


我解决它的超级疯狂的想法:每次开始动画开始时,截取MapFragment(应该可以使用SurfaceView)并在动画期间将其放置.但我真的不知道该怎么做...... 拍摄地图的截图是不可能的,但也许有人会从中受到启发.

或者也许禁用以其他方式重绘地图,我不知道.


更新:

发现了这个.

看起来SurfaceView可以更改为TextureView以消除这些限制.但由于MapFragment基于SurfaceView,我不知道它是否可以实现.

另一个更新 似乎此问题已在4.1+设备上得到解决.他们只使用了TextureView.但在较低版本中,我们仍然需要使用变通方法.

android surfaceview android-maps mapfragment android-maps-v2

53
推荐指数
2
解决办法
2万
查看次数

如何从地方选择器活动中检索地图的快照?

我正在创建一个应用程序,从Google地图中选择地点并将地址存储在数据库中.我还想将所选位置的快照存储在存储中,这样我就可以显示带有相应快照的数据.

当我从地图中选择一个地点时,地方选择器活动会显示以下对话框:

在此输入图像描述

在对话框中,显示地址,纬度和经度以及快照.我知道如何获取地址和latLng.但不知道如何存储显示的快照.

这是我的方法,它检索除该图像以外的所有内容:

  //opening place picker activity.
protected void onActivityResult(int requestCode,
                                int resultCode, Intent data) {

    if (requestCode == PLACE_PICKER_REQUEST
            && resultCode == Activity.RESULT_OK) {

        final Place place = PlacePicker.getPlace(this, data);
        final CharSequence name = place.getName();
        final CharSequence address = place.getAddress();

        String attributions = (String) place.getAttributions();
        if (attributions == null) {
            attributions = "";
        }
        tv4.setText(place.getLatLng().toString()+"\n"+name+"\n"+address+"\n"+attributions);


    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何获取图像并将其存储在外部或内部存储中.可能吗?我要按照此链接中的说明拍摄快照吗?

编辑

我有以下活动,即调用地方选择器的活动:

Main2Activity.java:

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent; …
Run Code Online (Sandbox Code Playgroud)

java android google-maps snapshot

26
推荐指数
1
解决办法
3684
查看次数

截取Android OpenGL的截图

我正在尝试截取Android OpenGL的截图.

我找到的代码如下:

nt size = width * height;
    ByteBuffer buf = ByteBuffer.allocateDirect(size * 4);
    buf.order(ByteOrder.nativeOrder());
    glContext.glReadPixels(0, 0, width, height, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, buf);
    int data[] = new int[size];
    buf.asIntBuffer().get(data);
    buf = null;
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
    bitmap.setPixels(data, size-width, -width, 0, 0, width, height);
    data = null;

    short sdata[] = new short[size];
    ShortBuffer sbuf = ShortBuffer.wrap(sdata);
    bitmap.copyPixelsToBuffer(sbuf);
    for (int i = 0; i < size; ++i) {
        //BGR-565 to RGB-565
        short v = sdata[i];
        sdata[i] = (short) (((v&0x1f) << …
Run Code Online (Sandbox Code Playgroud)

android opengl-es

20
推荐指数
3
解决办法
2万
查看次数

如何使用Google Maps v2快照?

我必须用新的"快照制造商"来解决这个问题,这是在谷歌地图发布8月份实施但我不知道如何做到这一点.可以给我一个简单的例子吗?

这是我的代码:

public class MainActivity extends Activity {
static LatLng HAMBURG = new LatLng(47.524749, 21.632745);
GoogleMap map;
File dbFile;
private File imageFile;


@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    PolylineOptions line = new PolylineOptions();

    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
            .getMap();
    /*
     * Adatbázis
     */
    try {
        dbFile = getDatabasePath("/mnt/sdcard/Download/TeleSensors.db");
    } catch (Exception e) {

    }

    SQLiteDatabase myDataBase = SQLiteDatabase.openDatabase(
            dbFile.getAbsolutePath(), null, SQLiteDatabase.OPEN_READONLY);

    Cursor curTAB = myDataBase.rawQuery("SELECT * FROM  GPS_Values;", null);

    Integer count = 0;
    while (curTAB.moveToNext()) {
        String s_latitude …
Run Code Online (Sandbox Code Playgroud)

android google-maps

10
推荐指数
3
解决办法
2万
查看次数

如何以编程方式获取/合并谷歌地图v2和xml布局的屏幕截图?

我正在使用这个答案的代码来截取Google Map v2, 它给出了输出:

在此输入图像描述

哪个可以拍摄Map的屏幕截图

使用以下代码,我可以使用黑色地图屏幕的布局屏幕截图,如下面的代码地图将在ScreenShot中黑色

String mPath = Environment.getExternalStorageDirectory().toString()
                + "/" + "myTestScr" + System.currentTimeMillis() + ".jpeg";
Bitmap bitmap;
        View v1 = (View) findViewById(R.id.rootviewtest);
        v1.setDrawingCacheEnabled(true);
        bitmap = Bitmap.createBitmap(v1.getDrawingCache());
        v1.setDrawingCacheEnabled(false);

        OutputStream fout = null;
        File imageFile = new File(mPath);

        try {
            fout = new FileOutputStream(imageFile);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout);
            fout.flush();
            fout.close();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

以上代码的输出:

在此输入图像描述

我真正需要的是:

在此输入图像描述

所以,现在我的问题是如何在第3屏幕中获得输出programmatically

帮我合并两个(1和2)屏幕拍摄一个屏幕截图programmatically

或者programmatically在拍摄(1和2)屏幕截图后合并两个图像的任何其他替代方案?

android screenshot google-maps-android-api-2

8
推荐指数
1
解决办法
5520
查看次数

GoogleMap快照方法返回白色图像

我正在尝试使用此处提到的API获取Google Maps V2地图的屏幕截图,但这似乎总是返回底部带有Google徽标的白色图片.如果它不是徽标,我会确定这根本不起作用,但徽标意味着发生了一些事情并且地图没有显示.这大致就是我正在做的事情:

mv.setVisibility(View.VISIBLE);
mv.getMap().snapshot(new GoogleMap.SnapshotReadyCallback() {
    public void onSnapshotReady(Bitmap snapshot) {
        synchronized(finished) {
            finished[0] = snapshot;
            finished.notify();
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我尝试了多种不同的方法,包括将图像绘制到不同的图像和各种其他尝试.

唯一的主要区别是我使用MapView而不是MapFragment,因为我在这里无法切换到使用片段的一些技术问题.

android google-maps codenameone google-maps-android-api-2

6
推荐指数
1
解决办法
3639
查看次数

Android 中的黑色屏幕截图

我一直在研究如何在 android 中以编程方式截取屏幕截图,但是当它截取屏幕截图时,我得到了一个工具栏和黑屏,而不是屏幕上实际显示的内容。

我还尝试在我为谷歌地图创建的自定义 InfoWindow 布局中对特定的 TextView 进行屏幕截图。但这会在下面的第二行创建一个空指针异常。

TextView v1 = (TextView)findViewById(R.id.tv_code);
v1.setDrawingCacheEnabled(true);
Run Code Online (Sandbox Code Playgroud)

无论如何,是否可以在不安装android屏幕截图库的情况下实际截图屏幕上的内容,或者在自定义InfoWindow布局中截图TextView

这是我的截图方法:

/**
 * Method to take a screenshot programmatically
 */
private void takeScreenshot(){
    try {
        //TextView I could screenshot instead of the whole screen:
        //TextView v1 = (TextView)findViewById(R.id.tv_code);

        View v1 = getWindow().getDecorView().getRootView();
        v1.setDrawingCacheEnabled(true);
        Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
        v1.setDrawingCacheEnabled(false);


        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
        File f = new File(Environment.getExternalStorageDirectory()
                + File.separator + "test.jpg");

        FileOutputStream fo = new FileOutputStream(f);
        fo.write(bytes.toByteArray());
        fo.flush();
        fo.close();

        MediaStore.Images.Media.insertImage(getContentResolver(), f.getAbsolutePath(), f.getName(), …
Run Code Online (Sandbox Code Playgroud)

java android screenshot

5
推荐指数
1
解决办法
5347
查看次数

如何在android中从lat long获取地图视图图像

在我的应用程序中,用户希望通过搜索或触摸类似whatsApp 的地图来发送他的位置,然后我想创建一个与 whatsapp 相同的触摸位置或搜索位置的缩略图。

我在互联网上搜索我只找到了这个,但是很难用 eclipse 和 android 低版本来实现。那么有没有其他方法可以做到

提前致谢

android android-mapview

1
推荐指数
1
解决办法
3551
查看次数