小编pyk*_*yko的帖子

批处理文件 - 命令行参数的数量

只是将一些shell脚本转换为批处理文件,有一件事我似乎找不到......这是一个简单的命令行参数数量.

例如.如果你有:

myapp foo bar
Run Code Online (Sandbox Code Playgroud)

在壳牌:

  • $# - > 2
  • $* - > foo吧
  • $ 0 - > myapp
  • $ 1 - > foo
  • 2美元 - >吧

批量生产

  • ?? - > 2 <----什么命令?!
  • %* - > foo吧
  • %0 - > myapp
  • %1 - > foo
  • %2 - >吧

所以我环顾四周,要么我正在寻找错误的地方,要么我是盲目的,但我似乎无法找到一种方法来获取传入的命令行参数的数量.

是否有类似于shell的"$#"命令用于批处理文件?

PS.我发现最接近的是遍历%1s并使用'shift',但是我需要在脚本中稍后引用%1,%2等,这样就没有用了.

shell scripting batch-file

89
推荐指数
5
解决办法
12万
查看次数

为Robolectric提供SharedPreferences的测试数据

刚刚开始使用Robolectric,它似乎是我所需要的.但是,我在使用SharedPreferences方面遇到了一些障碍.

我有两个测试用例

  1. Activity需要一个新的/空的sharedPreferences

  2. Activity期望sharedPreferences中包含一些数据

对于测试用例1,测试按预期传递,所以很好:)

但是,对于测试案例2,我似乎无法找到一个很好的方法来为Robolectric提供一些虚假数据,因此Activity能够访问这些假数据.

感觉就像一个非常常见的用例,但我似乎无法弄清楚如何做到这一点!

java android robolectric android-testing

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

AlarmManager,BroadcastReceiver和Service无法正常工作

我正在重构一些代码,以便我的应用程序每天在给定时间从网站提取数据.从我的研究来看,这似乎AlarmManager是最合适的方法.

我一直关注的教程是:http://mobile.tutsplus.com/tutorials/android/android-fundamentals-downloading-data-with-services/

到目前为止,AlarmManagerBroadcastReceiver似乎工作,然而Service似乎从来没有开始(即onStartCommand似乎没有被调用)

以下是我到目前为止的代码的重要摘要:

MyActivity.java

private void setRecurringAlarm(Context context) {
    Calendar updateTime = Calendar.getInstance();
    updateTime.setTimeZone(TimeZone.getDefault());
    updateTime.set(Calendar.HOUR_OF_DAY, 20);
    updateTime.set(Calendar.MINUTE, 30);

    Intent downloader = new Intent(context, AlarmReceiver.class);
    downloader.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, downloader, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    // should be AlarmManager.INTERVAL_DAY (but changed to 15min for testing)
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, updateTime.getTimeInMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent); 
    Log.d("MyActivity", "Set alarmManager.setRepeating to: " + updateTime.getTime().toLocaleString());
}
Run Code Online (Sandbox Code Playgroud)

AlarmReceiver.java

public class AlarmReceiver extends BroadcastReceiver { …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver alarmmanager android-pendingintent

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

使用libgdx中的ShaderProgram为游戏菜单创建叠加层

当点击"菜单"按钮时,制作游戏并尝试覆盖屏幕 - 我想象的应该是相当普遍/简单,但仍然有实现它的问题.

我目前的设置:

  • TiledMapRenderer:渲染TMX图块(背景/地图)
  • SpriteBatch:用于各种资产(例如玩家形象)
  • 阶段:按住菜单按钮
  • ShaderProgram:使用GLSL创建叠加/着色效果
  • SpriteBatch和map设置为使用ShaderProgram

正如许多人所建议的,对于性能,我只使用一个SpriteBatch - 因此各种资源和菜单Stage都使用相同的sprite批处理.

着色器的目的是添加一个深色/半透明叠加层以使屏幕变灰,以便打开时菜单更易于阅读.

我遇到的主要问题是因为资源和菜单共享相同的SpriteBatch,它们也共享相同的着色器......所以,当我启用着色效果时,所有内容(背景和菜单按钮)都会变灰.

我怎样才能只使用一个SpriteBatch但只将Shader应用于背景(并保持菜单按钮正常/无阴影)?

shader libgdx

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

Google游戏服务登录问题(首次尝试失败,第二次失败)

目前正试图将我的游戏(使用libgdx)连接到Google Game Services以启用排行榜/成就等,并看到一些奇怪的行为.

问题

当我第一次点击"登录"时,它会显示选择你的谷歌帐户的对话框,然后播放服务权限圈子对话框,然后是大加载圈子.过了一会儿,它会显示一个对话框,其中包含以下错误Google Play服务的未知问题

如果我点击"确定"关闭该错误对话框,然后再次点击"登录"按钮,我立即成功登录.之后,我可以看到排行榜等.

细节

我看到的错误日志:

...
D: GameHelper: onActivityResult: req=RC_RESOLVE, resp=9001
D: GameHelper: onAR: responseCode=9001, so giving up.
D: GameHelper: killConnections: killing connections.
D: GameHelper: killConnections: all clients disconnected.
D: GameHelper: State change CONNECTING -> DISCONNECTED
D: GameHelper: Making error dialog for failure: SignInFailureReason(serviceErrorCode:SIGN_IN_REQUIRED(4),activityResultCode:9001)
D: GameHelper: Showing error dialog.
D: GameHelper: Notifying LISTENER of sign-in FAILURE (error)
I: ----- Sign in failed :( -----
///// Tap the 'sign in' button again ///////
I: ----- Begin …
Run Code Online (Sandbox Code Playgroud)

android libgdx google-play-services google-play-games

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