小编Cha*_*nya的帖子

android - 发布错误通知 - 无法展开RemoteViews:StatusBarNotification

我试图从IntentService在通知区域中发布带有自定义视图的通知,并获取IntentService错误.

这是我在做的事情Couldn't expand RemoteView:

mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
icon = R.drawable.icon;
tickerText = "data upload in progress";
contentView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.notiflayout);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.text, "Hello");
contentView.setProgressBar(R.id.progressBar, 100, 10, false);
whatNext = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(getApplicationContext(), starterActivity.class), 0);
notification = new Notification(icon, tickerText, System.currentTimeMillis());
notification.contentView = contentView;
notification.contentIntent = whatNext;
Run Code Online (Sandbox Code Playgroud)

我打电话onCreate()notify(),并取消通知onHandleIntent().

我已经验证此代码可以在一个独立的应用程序中运行,该应用程序没有onDestroy().这样做IntentService是以某种方式给予麻烦.

有人可以解释一下我做错了什么吗?

谢谢!

java android android-service android-notifications

43
推荐指数
5
解决办法
4万
查看次数

Android:通过TCP套接字流式传输音频

对于我的应用程序,我需要在Android手机上录制来自MIC的音频,并通过TCP将其发送到需要播放的其他Android手机.

我正在使用AudioRecordAudioTrack上课.这适用于文件 - 使用文件将音频写入文件DataOutputStream,并使用它读取DataInputStream.

但是,如果我从套接字而不是文件中获取相同的流,并尝试写入它,我会得到一个例外.

我无法理解可能出现的问题.任何帮助将不胜感激.

编辑:即使我尝试使用更大的缓冲区大小(65535字节,160000字节),问题也是一样的.

这是代码:

录音机:

int bufferSize = AudioRecord.getMinBufferSize(11025, , AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); 

AudioRecord recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC, 11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);

byte[] tempBuffer = new byte[bufferSize];

recordInstance.startRecording();

while (/*isRecording*/) {
      bufferRead = recordInstance.read(tempBuffer, 0, bufferSize);
      dataOutputStreamInstance.write(tempBuffer);
}
Run Code Online (Sandbox Code Playgroud)

上面的DataOutputStream获得如下:

BufferedOutputStream buff = new BufferedOutputStream(out1); //out1 is the socket's outputStream
DataOutputStream dataOutputStreamInstance = new DataOutputStream (buff);
Run Code Online (Sandbox Code Playgroud)

请你看看,让我知道我在这里做错了什么?

谢谢,

java sockets android dataoutputstream

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

使用Java的文件资源管理器 - 如何去做?

我将设置使用Java创建文件资源管理器.目的是尽可能地模拟默认资源管理器的行为,无论底层操作系统是什么.

我在Java中没有做过GUI编程.

我查找了Swing,SWT和JFace,我开始使用本教程开始我的项目:http: //www.ibm.com/developerworks/opensource/library/os-ecgui1/

我想知道您对解决此问题的最佳方法的看法.如果您可以评论编码的复杂性,可移植性和操作系统独立性以及效率,那就太棒了.

还有什么我应该知道的吗?还有其他方法吗?

非常感谢!


感谢您的回答和回复.

看起来我会选择Swing来实现文件浏览器.是什么给了我毛骨悚然的想法,没有什么可以模仿默认的资源管理器视图...你能提供一些关于它的指示吗?我是否获取文件列表,获取图标,然后在屏幕上以网格方式排列它们以显示默认的资源管理器视图?

java swing swt jface

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

来自IntentService的通知 - 获取Context时的NullPointerException

我无法从中生成通知(在通知区域中)IntentService.我得到了一段NullPointerException时间NotificationManager.问题在于Context.

06-01 16:46:05.910: ERROR/AndroidRuntime(14745): Caused by: java.lang.NullPointerException
06-01 16:46:05.910: ERROR/AndroidRuntime(14745):     at android.content.ContextWrapper.getSystemService(ContextWrapper.java:363)
06-01 16:46:05.910: ERROR/AndroidRuntime(14745):     at com.Android.Main1.FileUploaderService.<init>(FileUploaderService.java:71)
Run Code Online (Sandbox Code Playgroud)

代码行是:

mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Run Code Online (Sandbox Code Playgroud)

我试过了getApplicationContext(),getBaseContext()但无济于事.

有人可以告诉我这里有什么问题吗?如何从IntentService生成通知?


附加信息:我的应用程序中
也有一个Service,并且来自那里的通知正常工作.该IntentService不是由活动时间; 它由服务部门启动.

android android-service android-notifications

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

如何在kill服务上处理DeadObjectException?

我正在接受DeadObjectException我的代码.下面,我描述了我的设置,以及我试图解决的问题.


一个Service 小号从开始Application 一个.

Activity B(来自另一个应用程序)使用MessengerIBinder接口与该服务进行通信.此活动也是从同一服务开始的.按下此按钮内的按钮,我应该将消息发送回服务.我经常DeadObjectException按下按钮.

我知道最可能的原因是 - 系统被杀死并重新启动服务,并且活动有旧的引用.除此之外,我还没有在网上找到太多的信息.

这是我尝试过的:

  • startForeground()在服务中使用过,我可以看到服务正在运行(通知区域中的通知).我仍然有例外.
  • 在系统重启时,我暂时没有得到此异常.
  • 例外是间歇性的.我没有百分之百的责备.但是,在以下场景中,我总是得到异常:
    1. 启动应用程序A(也启动服务S).
    2. 开始活动B,一切正常.
    3. 通过重新部署应用A重新启动服务.
    4. 导航到活动B. 发生异常.
    5. 此时,如果我重新启动活动B,则异常消失.
  • 这使我得出结论,如果我确保每次服务启动时活动B都是新的,那么这个例外就会消失.然后我尝试在开始之前向活动B提供谋杀意图.(活动具有BroadcastReceiver,并调用finish()onReceive()).问题是,如果活动暂停,Intent则不会传递给它.此外,我看到onDestroy()被简单地命中,因为Android管理活动生命周期,意图不保证交付给它.我也试过扩展这个stackoverflow问题中BaseActivity提到的.
  • 我也试过设置FLAG_ACTIVITY_CLEAR_TASK(除了通常FLAG_ACTIVITY_NEW_TASK),没有更好的结果.

现在,我觉得好像没有选择.有没有人遇到类似的问题?有什么我可以尝试的吗?是否有可能捕获异常然后重新绑定服务?

java android exception

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

Android:以编程方式将apk复制到/ system/app

我正在尝试从我的java代码安装系统应用程序,到目前为止,我还没有取得任何成功.

以下是我到目前为止所做的事情:

  1. 我的设备扎根了.
  2. 我的"安装程序"应用程序安装为系统应用程序.(手动将其复制到/ system/app)
  3. 我用平台密钥签署了安装程序apk,我android:sharedUserId="android.uid.system"在Manifest中.
  4. 我一直在努力(尝试,然后再尝试一些)Runtime.getRuntime.exec("su").我打算挂载系统分区rw,cat为apk 做一个,然后进行系统分区ro.以下是命令列表:

    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system<br>
    cat /sdcard/application.apk > /system/app/application.apk<br>
    mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system<br><br>The application.apk here is the app being installed from the installer app. This app is also signed with platform key, and has the sharedUserId configured.
    
    Run Code Online (Sandbox Code Playgroud)
  5. 我已要求INSTALL_PACKAGES清单中的许可.

我尝试了许多exec("")格式的变体,包括使用'su -c'每个命令.我得到了Broken Pipe异常和安全异常.有时,我没有得到异常,但文件未被复制.


请让我知道我在这里缺少什么.有人有这个工作吗?

谢谢!

android root su android-install-apk

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

两个服务之间的Android通信

我知道活动可以使用IBinder接口与本地服务进行通信; 我试图找到两种服务之间的通信方式.

具体来说,我让我的主服务启动一个IntentService来处理文件上传.我希望这个IntentService在上传完成后,在它死之前通知主服务.

关于这将如何发生的任何想法?

service android

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

Android:针对app小部件的instumentation测试

我希望自动化测试主屏幕小部件.我看过android测试页面InstrumentationTestRunner类.我也看过CTS源代码; 但我找不到任何有用的东西.

我能找到的最接近的是这个Robolectric ShadowAppWidgetManager,但我不确定如何使用它.

你能否分享一下你如何测试app小部件?我可以使用任何框架或库吗?

非常感谢你的帮助!

testing junit android android-appwidget

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

mprotect - 如何对齐多个pagesize有效?

我不理解mprotect用法中的"对齐分配的内存"部分.

我指的是http://linux.die.net/man/2/mprotect上给出的代码示例

char *p;
char c;
/* Allocate a buffer; it will have the default
   protection of PROT_READ|PROT_WRITE. */
p = malloc(1024+PAGESIZE-1);
if (!p) {
    perror("Couldn't malloc(1024)");
    exit(errno);
}
/* Align to a multiple of PAGESIZE, assumed to be a power of two */
p = (char *)(((int) p + PAGESIZE-1) & ~(PAGESIZE-1));
c = p[666];         /* Read; ok */
p[666] = 42;        /* Write; ok */
/* Mark the buffer read-only. */
if (mprotect(p, 1024, PROT_READ)) { …
Run Code Online (Sandbox Code Playgroud)

linux memory-management

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

Android Wear:以编程方式停止我的应用通知显示在手表上

从阅读有关可穿戴通知文档的内容来看,似乎无法以编程方式阻止我的应用程序的通知出现在连接的可穿戴设备上.我可以使用手持设备上的Android Wear应用程序将我的应用添加到"静音"应用列表中; 但是,我想使用代码来做到这一点.如果你发现了这个问题,请告诉我.

此外,是否可以在手机和可穿戴设备上显示完全不同的通知,而不是仅在可穿戴设备上设置不同的通知操作?

谢谢您的反馈!

android android-notifications wear-os

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