小编Ric*_*ich的帖子

runOnUiThread vs Looper.getMainLooper().在Android中发布

任何人都可以告诉我,如果使用runOnUiThread()与Looper.getMainLooper().post()在Android中的UI线程上执行任务有什么区别吗?

关于我唯一可以确定的是,因为runOnUiThread是一个非静态的Activity方法,所以当你需要在一个看不到Activity的类中编写代码时,Looper.getMainLooper().post()会更方便(例如一个接口).

我不是在寻找关于是否应该在UI线程上执行某些事情的讨论,我知道有些事情不可能并且很多事情不应该,但是有些事情(比如启动AsyncTask)必须从UI线程.

谢谢,
R.

android android-ui

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

在Android中使用AudioTrack播放WAV文件

我正在使用Android,试图让我的AudioTrack应用程序播放Windows .wav文件(Tada.wav).坦率地说,它应该不是那么难,但我听到很多奇怪的东西.该文件保存在手机的迷你SD卡上并且读取内容似乎不是问题,但是当我播放文件时(带参数我只是PRETTY SURE是正确的),我得到几秒钟的白噪声在声音似乎将自己解决为可能正确的事物之前.

我已经成功录制并在手机上播放了自己的声音 - 我根据此示例中的说明创建了一个.pcm文件:

http://emeadev.blogspot.com/2009/09/raw-audio-manipulation-in-android.html

(没有向后掩盖)......

任何人都有一些建议或意识到网上的一个例子在Android上播放.wav文件?

谢谢,R.

android wav audio-streaming

24
推荐指数
3
解决办法
4万
查看次数

Android文本显示 - Canvas.drawText()输出像素化

我的Android应用程序以几种不同的方式显示文本,并且它们之间存在一些恼人的差异,我希望人们可以提供帮助.

当我使用可能被称为"自动"的显示方法时,文本显示得非常好.通过自动方法,我指的是工具,比如Toasts和Button小部件,我只提供文本,操作系统(或"环境"或其他)为我显示它.这些字母曲线很好,看起来很舒服,而且很容易辨认.

但是,在我处理文本显示的代码中(Canvas.drawText()在Surface Runner视图中使用),文本质量很差.该文本仍然清晰可辨,但它看起来像素化.这些信件看起来并不是最好的.

我尝试过Paint.setTypeface()使用Typeface.SANS_SERIF作为示例,但是当我的代码总是很差时显示的质量.可行,但很差.

有没有人经历过这个?任何人都有解决方案吗?

android text canvas

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

Android工作室阻止代码重新格式化粘贴

我已经开始使用Android Studio(取代Eclipse),而我无法习惯的一件事是Studio如何自动(在某些情况下)重新格式化当前文件中的部分甚至全部代码.其中一种情况是将文本粘贴到我的文件中.当我这样做时,整个块会根据我可以在设置中格式化(但严重不喜欢)的神秘规则重新格式化.

设置中的某个位置是否有一个复选框可以关闭它?

我可以很容易地格式化我自己的代码,因为我也可以手动告诉Studio"现在就做",似乎没有任何理由忍受所有的自动手持.

android intellij-idea android-studio

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

ByteBuffer/IntBuffer/ShortBuffer Java类是否快速?

我正在研究Android应用程序(显然是Java),最近我更新了我的UDP阅读器代码.在这两个版本中,我设置了一些缓冲区并接收UDP数据包:

byte[] buf = new byte[10000];
short[] soundData = new short[1000];
DatagramPacket packet = new DatagramPacket (buf, buf.length);
socket.receive (packet);
Run Code Online (Sandbox Code Playgroud)

在初始版本中,我将数据一次放回一个字节(实际上是16个PCM音频数据):

for (int i = 0; i < count; i++)
    soundData[i] = (short) (((buf[k++]&0xff) << 8) + (buf[k++]&0xff));
Run Code Online (Sandbox Code Playgroud)

在更新的版本中,我使用了一些我开始时不知道的很酷的Java工具:

bBuffer  = ByteBuffer.wrap (buf);
sBuffer  = bBuffer.asShortBuffer();
sBuffer.get (soundData, 0, count);
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,"计数"正在正确填充(我检查过).然而,我的流媒体音频似乎出现了新的问题 - 也许它的处理速度不够快 - 这对我来说没有任何意义.显然,缓冲区代码正在编译成三个以上的JVM代码语句,但是当我开始这个时,第二个版本会比第一个版本更快,这似乎是一个合理的假设.

很明显,我并不是说我的代码必须使用Java NIO缓冲区,但至少乍一看,它看起来似乎很难做到这一点.

任何人都有一个快速,简单的Java UDP阅读器的建议,以及是否有一个普遍接受的"最佳方式"?

谢谢,R.

java android nio bytebuffer

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

在Java中创建Calendar对象的临时副本

我需要弄清楚如何创建一个临时日历对象(已经存在的"永久"日历的副本),以便我可以操作副本:tempCal.add(unit,value).我需要保持原始日历对象不变,所以我真的不想直接调用add(unit,value).

由于我创建副本的所有尝试都没有实际起作用,我当前的丑陋黑客是调用permanentCal.add(unit,value),显示所需的结果,然后调用permanentCal.add(unit,-value) - 看起来,酷.

java calendar

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

尝试在我的Android应用中实施退出确认

我已经发现你无法覆盖Android手机上的Home按钮.它退出应用程序,它总是退出应用程序,它不会打扰任何namby-pamby确认.我想我理解谷歌的推理 - 但我确实认为这有点短视......

无论如何,(在我了解主页按钮之前),我设置了我的应用程序,以便用户可以通过选项菜单退出应用程序 - 使用onCreateOptionsMenu()和XML文件,我设置了一个简单的弹出菜单,显示按下菜单按钮时.其中一个选择是退出,它工作正常.

但是,在我看来,在退出过程中添加一个确认对话框可能是一个好习惯(即使它也可以被认为是多余的).所以,我创建了一个名为"你想退出吗?"的AlertDialog.以及是和否按钮......

按钮的单击侦听器很简单,只需将exitConfirm(布尔值)设置为true或false即可.处理Exit菜单选项的代码然后在我的应用程序之后清理并执行finish()或不执行取决于exitConfirm的状态...

不幸的是,它完全不起作用...退出案例的onOptionsItemSelected()中的所有代码都会执行,然后显示对话框!我想我应该看到即将到来.我想如果我继续喋喋不休,我会想出一个完成这个的方法,但我想我会向社区提出建议 - 所以,是否有人建议顺利退出Android应用程序方式,包括从用户获得确认的步骤??

谢谢,R.

user-interface android

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

Linux纪元时光

在Linux中,有没有一种简单的方法可以直接设置纪元时间值?我知道有很多方法可以格式化date命令,但它们似乎都不符合我们的需求.

我们正在做的是使用Android手机在连接时在嵌入式Linux设备上设置时间.获取Android上的纪元时间并不是一件容易的事,但是Linux设备接受这些信息的所有尝试都遭到了拒绝.

linux time

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

对Android操作栏不太满意......我怎样才能减小它的大小

我真的不喜欢Android提出的新动作栏 - 并且显然迫使我在以后的API级别中使用它.但是,因为它似乎我坚持使用它 - 我没有更多菜单按钮,我需要我失去的功能,我想尽量减少烦恼因素.

任何人都可以告诉我如何不显示图标/徽标?这很容易抑制标题,但徽标仍然太多 - 并且提供零帮助.

另外,有人能告诉我如何降低酒吧的高度吗?目前,它约为1/4"(对于公制类型约为半厘米),但这很容易达到它需要的两倍 - 特别是如果我可以抛弃图形.

最后,我的屏幕左侧和第一个菜单项之间有一个很大的空白区域.如果我的五个菜单项适合显示器,这不会打扰,但自然他们不会.有没有人知道如何鼓励我的软件将菜单项推到左侧,以便它们适合?

谢谢,
R.

android android-actionbar

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

无法捕获NetworkOnMainThreadException

我知道导致NetworkOnMainThreadException的原因以及如何修复它,但为了改善开发体验,我希望能够捕获异常并至少记录事件或提醒用户(谁仍然是此时的开发人员)...

奇怪的是,我没有运气这个代码(通过我的TCP套接字发送和接收):

try
{
    toServer.println (msg.trim());
    resp = fromServer.readLine();
}
catch (android.os.NetworkOnMainThreadException nex)
{ ... do something here ... }
Run Code Online (Sandbox Code Playgroud)

Eclipse完全没有识别出异常,我从Android开发者网站上复制了异常类型 - 我很确定我拼写正确...

是否有一些我不了解的Java(也许)会让这个异常无法捕获?

谢谢,R.

android exception

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

Android 操作栏两行文本标签

有没有办法(也许是沿着不间断空格的行的一些特殊字符)可以强制我的操作栏中的菜单项具有两个行标签?我认为这看起来比长的单行标签标签更好......

谢谢,
R。

编辑,附加信息:我很抱歉,到目前为止我已经设法避免需要溢出菜单,可能是因为我正在为具有漂亮大屏幕的 Nexus 7 进行开发。澄清一下,我的菜单选项卡之一(在操作栏中)是“恢复默认值”,但我认为如果它是:

恢复
默认值

有什么可以合并到我的 Strings.xml 文件中以强制操作栏显示这样的项目吗?当我为所有五个菜单项使用更长的名称时,“恢复默认值”DID 显示在两行(但它是唯一的一行)。无论如何,我知道这是可能的,只是不知道如何故意这样做。

android android-actionbar

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