小编Thu*_*bit的帖子

刷新地图ItemizedOverlay给出ArrayIndexOutOfBoundsException

使用com.google.android.maps API,我有一个MapActivity它使用ItemizedOverlay放置多个(最多约1000)上的图标MapView.当LocationListener检测到设备移动了一定距离(目前为5米,但仅用于测试)时,我想刷新(或者只是添加到列表中)图标.

我已经添加了setLastFocusedIndex(-1)和populate(),但我的ItemizedOverlay仍然会崩溃. 我认为当我向列表中添加更多项目时会崩溃,但有时即使我不移动手机也会崩溃.它在第一次更新时崩溃了.我无法从LogCat中确切地知道是什么触发了错误.

我的MapActivity基于各种教程:

编辑:调整代码来批量更新项目,但它仍然崩溃

public class NearbyActivity extends MapActivity implements VenueCatalogListener {
    private final String TAG = this.getClass().getSimpleName();

    List<Overlay> mapOverlays;
    HelloItemizedOverlay itemizedOverlay;

    private MapController mapController;
    private MapView mapView;
    private LocationManager locationManager;

    private int latE6;
    private int lonE6;

    private Location current_location;
    private VenuesFromServer venues_from_server;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        venues_from_server = new VenuesFromServer(this);
        setupViews();
    }

    private void setupViews() {
        setContentView(R.layout.nearby_view);


        RelativeLayout linearLayout …
Run Code Online (Sandbox Code Playgroud)

android itemizedoverlay android-maps

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

如何守护使用upstart运行的php脚本

我有一个作为cron作业运行的PHP脚本.该脚本使用DB来查看它是否有任何操作,并确保其兄弟尚未运行.

我想将PHP脚本作为带有upstart的守护进程运行.

我已将我的/etc/init/super-mailer.conf文件设置为:

description "super mailer"
author "Rob Nugen"

start on startup
stop on shutdown
respawn

exec sudo -u www-data php -f /var/www/super-mailer/scripts/mailer.php
Run Code Online (Sandbox Code Playgroud)

我执行sudo start super-mailer并运行一次.

但它不会再次运行.为什么不?

我也试过更换exec sudo线

script
    sudo -u www-data php -f /var/www/clubberia-mailer/scripts/mailer.php
end script
Run Code Online (Sandbox Code Playgroud)

我是否需要将PHP脚本更改为循环?如何告诉upstart继续启动脚本?

php ubuntu upstart

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

语言目录的资源目录名称?

在android中使用自定义语言环境时,目录名称例如

res/drawable-en-rUS
res/values-fr-rCA
Run Code Online (Sandbox Code Playgroud)

-r指定使用该语言的地区(国家)。

什么时候还指定区域不同?我的客户要求我们支持英语,中文以及三(3)个日语变体。(*)

我使用自定义的Application类设置语言环境,并编写如下代码:

locale = new Locale(lang, country);
Locale.setDefault(locale);
config.locale = locale;
mContext.getResources().updateConfiguration(config,mContext.getResources().getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)

并正在使用这样命名的资源目录:

/res/drawable-en
/res/drawable-cx
/res/drawable-ja
/res/drawable-ja-rHI
/res/drawable-ja-rFU
Run Code Online (Sandbox Code Playgroud)

虽然这有效 ; 最下面的两个条目是黑客。我实际上以虚构的国家/地区名称作为区域,例如

/res/drawable-ja-rJP-vHI
/res/drawable-ja-rJP-vFU
Run Code Online (Sandbox Code Playgroud)

指定日本境内的变体。

还有另一个Locale()构造函数,即

Locale(String language, String country, String variant);

如果我用这个

locale = new Locale("ja", "JP", "hi");

如何指定资源目录,包括语言,区域和变体?

我在提供替代应用程序资源中找到的最好的资源没有显示如何做到这一点。

(*)他们请求了这些日语变体:

  • 仅平假名
  • 平假名与汉字上方的假名
  • 汉字+平假名正常

android localization

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

为什么我的可运行给ANR?

我正在尝试实现一个,基于本教程从a SurfaceView调用它的onDraw()方法.在我开始运行以下代码后,我的应用程序正在提供ANR.Thread

我尝试过实现Runnable,而不是扩展Thread但它仍然给出了ANR.

据我所知,当ANR发生时,应用程序上没有其他任何东西在运行.(ANR仅在我添加此代码时才开始发生:)

package com.thunderrabbit.run;

import android.graphics.Canvas;
import android.view.SurfaceHolder;

public class MainThread extends Thread {
    private final String TAG = this.getClass().getSimpleName();

    // desired fps
    private final static int    MAX_FPS = 50;
    // maximum number of frames to be skipped
    private final static int    MAX_FRAME_SKIPS = 5;
    // the frame period
    private final static int    FRAME_PERIOD = 1000 / MAX_FPS;  

    private SurfaceHolder surfaceHolder;
    private PageGLSurfaceView gamePanel; …
Run Code Online (Sandbox Code Playgroud)

android

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

以编程方式将SurfaceView添加到在ImageView下按Z顺序排列的FrameLayout

编辑2a:随意跳到底部以获得简洁的问题.

我可以通过xml绘制SurfaceView.就我而言,我正在创建一个电子书,它将在SurfaceViews上为本书的每个页面运行不同的动画.

我有一个.xml有FrameLayout调用的布局@+id/animation_layout.

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 
        xmlns:android="http://schemas.android.com/apk/res/android" 
        android:orientation="vertical" 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
    >
        <fi.harism.curl.CurlView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/curl"
        >
        </fi.harism.curl.CurlView>
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/animation_layout"
        />
        <include layout="@layout/narration" 
        />
    </RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

根据正在显示的书的哪个页面,我想在我的一组类中添加其中一个类的不同实例SurfaceView.

Page01SurfaceView extends PageAniSurfaceView {
    //
    // code here includes onDraw() definition
    //
}

Page02SurfaceView extends PageAniSurfaceView {
    //
    // code here includes onDraw() definition
    //
}
Run Code Online (Sandbox Code Playgroud)

PageAniSurfaceView基本上在实例化时创建一个Thread,并在创建View时启动该线程.

public class PageAniSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
private final String TAG = this.getClass().getSimpleName();
private …
Run Code Online (Sandbox Code Playgroud)

android surfaceview

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

制作这种布局的合理方法是什么?

在下图中,黄色方块表示在我的整体布局中的RelativeLayout.

顶行"状态消息"是一个ViewFlipper,它响应用户可以按下的ToggleButtons(A,B).按钮C,D和E执行重新加载整个视图的其他内容.我们的客户要求按钮A,B,C,D和E按照下面的方式排列.(垂直对齐不如水平对齐重要.)

编辑说A,B,C,D和E是大约20x20倾角的图像; 它们在约300dip的宽度内对齐.我希望按钮保持其纵横比.

希望做出这种布局

我创建了一个LinearLayout扩展,它扩展了按钮A和B(来自xml文件),然后是另一个LinearLayout,它在另一个xml文件中膨胀了按钮C,D和E.

按钮A和B(实际上是ToggleButtons):

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="true"
>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
    >
        <ToggleButton
            android:id="@+id/A"
            android:textOn=""
            android:textOff=""
            android:background="@layout/A"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="60dp"
            android:layout_marginRight="30dp"
        />
        <ToggleButton
            android:id="@+id/B"
            android:textOn=""
            android:textOff=""
            android:background="@layout/B"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
        />
    </LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

按钮C,D,E xml文件:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="true"
>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
    >
        <ImageView 
            android:id="@+id/C"
            android:src="@drawable/C"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
        />
        <ImageView 
            android:id="@+id/D"
            android:src="@drawable/D"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
        />
        <ImageView 
            android:id="@+id/E"
            android:src="@drawable/E"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
        />
    </LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我的代码基本上可以工作,但是我必须利用边缘来使事情正确排列(他们还没有).我想知道是否有一些更清晰的中心对齐按钮组"A B"和"CD E"的方式

ps:精明的读者会注意到我正在扩展LinearLayout,但是却在膨胀RelativeLayouts.(我不知道为什么它甚至可以在所有的工作,但)当我试图延长的RelativeLayout而是"唯E"布局甚至没有出现在我的设备上.我不知道它去了哪里.

android android-layout

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

getWindowVisibleDisplayFrame()在Android 2.2,2.3中给出了不同的值(但不是2.3.3)

我有一个Activity用途

getWindow().getDecorView().getWindowVisibleDisplayFrame(rectangle);
Run Code Online (Sandbox Code Playgroud)

确定可用的屏幕空间并决定放置图像的位置.

单击硬件"返回"按钮离开后返回活动Activity,矩形值为

(0,0,800,480)
Run Code Online (Sandbox Code Playgroud)

但是,在我点击硬件"home"按钮离开后返回Activity Activity,矩形值为

(0,38,800,480)
Run Code Online (Sandbox Code Playgroud)

它会抛出显示和图像放置.

如何确保在呼叫时获得一致的值

getWindow().getDecorView().getWindowVisibleDisplayFrame(rectangle);
Run Code Online (Sandbox Code Playgroud)

无论我怎么离开应用程序?

更新:感谢@Reno帮助测试; 它似乎依赖于Android版本而不是设备.

android android-activity

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

Lawnchair .nuke()在填写我的存储配额后无法正常工作

我正在使用Lawnchair使用我的Web客户端(Firefox 13.0)的"dom适配器"来存储持久数据,并且达到了存储配额.Console.log说

Persistent storage maximum size reached
Run Code Online (Sandbox Code Playgroud)

很公平; 我将用这个来核对它:

<script type="text/javascript" charset="utf-8">
            Lawnchair(function() {
                this.nuke();
                console.log("nuked");
            });
</script>
Run Code Online (Sandbox Code Playgroud)

在我达到存储配额之前,上面的代码可以清除持久存储中的所有内容.但现在它不起作用.页面显示正常,但控制台日志不显示任何内容.我希望它像以前一样说"nuked".

以下代码显示了我的所有持久数据(在尝试使用上面的代码进行nuke()之后).

<script type="text/javascript" charset="utf-8">
            Lawnchair(function() {
                this.keys(function(values) {
                        values.forEach(console.log)
                    })
            });
</script>
Run Code Online (Sandbox Code Playgroud)

如何使Lawnchair.nuke()在达到存储限制后工作?

javascript lawnchair

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

让d3js响应移动设备上的触摸

我有一个force用于显示节点和链接的D3应用程序.在我的电脑上,节点响应触摸,但在我的iPhone上,它们没有.

我的代码是不是开源的,但在研究,我发现(没有?)这个例子 也像它在我的电脑上不上我的iPhone上运行:

http://mbostock.github.io/d3/talk/20111116/force-collapsible.html

在电话上,我可以拖动节点; 我可以放大图表..但是如果我点击浅蓝色圆圈,它们就不会像我们在PC上那样变成大蓝圈.

使用Chrome设备模式,我测试了几种不同的模拟设备.在移动设备中,只有诺基亚设备有效.

如何让d3节点响应移动设备上的触摸?

mobile d3.js

5
推荐指数
0
解决办法
3476
查看次数

控制MediaPlayer中的音量

我正在有声读物中播放音频(旁白).音频文件采用.ogg格式,每个长度介于10到15秒之间.

编辑添加:我使用的是Android 2.2,API 8,我在我的Manifest中有这个:

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)

我有setVolumeControlStream(AudioManager.STREAM_MUSIC); 在我的onCreate()方法中.

我的声音通过类似于此的代码播放:

mp = MediaPlayer.create(mContext, resource);
mp.setOnCompletionListener(this);
mp.seekTo(0);
mp.setLooping(looping);
if(isSoundEnabled())
{
    mp.setVolume(1, 1);
}
else
{
    // I still need sounds to call their onComplete listeners to drive action
    mp.setVolume(0,0);
}
nowPlaying = true;
mp.start();
Run Code Online (Sandbox Code Playgroud)

但是,尽管有更多的保证(33并且计数!),但是只需要setVolumeControlStream(AudioManager.STREAM_MUSIC); 在onCreate()中,当我按下设备上的音量键(Motorola Xoom)时,我的声音音量不会改变.

为了验证我的音量键正在做什么,我覆盖了onKeyDown:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    boolean result = true;
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP)
    {
        DebugLog.d(TAG, "volume up");
    }
    else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
    { …
Run Code Online (Sandbox Code Playgroud)

android volume media-player

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