Articles of android 4.0

ICS上的位图加载了错误的像素格式

我遇到了以下问题。 当任何位图由在Ice Cream Sandwich上运行的应用程序从资源加载时,它可能会被错误地渲染,就好像它已被解码为与当前窗口格式不同的格式,没有应用抖动。 但是,解码格式和窗口格式都已明确设置: BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inPreferredConfig = Bitmap.Config.RGBA_8888; 和 getWindow().setFormat(PixelFormat.RGBA_8888); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER); 以下是从使用ICS 4.0.3在Emulator上运行的本文中获取的测试应用程序的屏幕截图(它在HTC HD2上提供了相同的结果): RGBA_8888 (32位) 窗口格式 ,各种位图解码格式: RGB_565 (16位) 窗口格式 ,各种位图解码格式: 有几点可以注意到: 不时不考虑抖动旗帜; ICS的默认窗口格式似乎是RGB_565 ; RGB_565 窗口格式和RGBA_8888 位图解码格式是唯一具有良好外观的渐变。 在这些问题中也报告了这个问题,但仍然没有find解决方案: 渐变兼容性问题 – ICS默认的颜色比以前的所有Android版本都少 Android中糟糕的背景图像质量 问题是,如何在ICS上处理所有这些格式,更准确地说,如何使用RGBA_8888格式制作ICS加载位图以及如何将窗口格式设置为RGBA_8888以便正确显示这些位图?

Android ICS:如何检测设备是否具有“屏幕后退/主页按钮”(如Galaxy Nexus)

我想知道是否有办法检测设备是否有“屏幕按钮”(如Galaxy Nexus或ICS平板电脑) 我的问题是在具有屏幕按钮的设备上,在操作上,添加溢出按钮(如果溢出),而不是在其他设备上,所以我希望能够预测这种行为。 感谢您的帮助。

获得冰淇淋三明治的真实屏幕分辨率

带有冰淇淋三明治的设备可以使用屏幕上的软键,这意味着这些按键可以占用一些屏幕。 我需要获得真正的屏幕分辨率,而不是分辨率减去软键占用的空间。 我尝试了以下,但都不起作用: Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); Log.d(“SCREEN RES”, “Width: ” + width + “. Height: ” + height); DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); height = metrics.heightPixels; width = metrics.widthPixels; Log.d(“SCREEN RES”, “Width: ” + width + “. Height: ” + height); 这是输出: 12-19 20:18:42.012: D/SCREEN […]

MediaButtonIntentReceiver无法在Android 4.0+中运行

目标是拦截来自耳机的广播以及最终的蓝牙,以响应来自耳机的不同types的点击以改变媒体播放器。 此解决方案适用于ICS之前的所有版本。 这是我尝试过的一些代码和事情: …. private BroadcastReceiver mediaButtonReceiver = new MediaButtonIntentReceiver(); …. public void onCreate() { … IntentFilter mediaFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON); mediaFilter.setPriority(2147483647); // this is bad…I know this.registerReceiver(mediaButtonReceiver, mediaFilter); … } public class MediaButtonIntentReceiver extends BroadcastReceiver { private KeyEvent event; public MediaButtonIntentReceiver() { super(); } @Override public void onReceive(Context context, Intent intent) { String intentAction […]

保护VpnService中的套接字

我正在探索Android的VpnService的function。 目前,我通过在用户空间重建IP堆栈构建了一个非常基本的请求转发器:我从VpnService的输入流中读取IP数据包,解析它们,对于我不想转发的连接,我尝试重新创建那些VPN连接外部的套接字连接。 我已经明白最后一点是由VpnService.protect()促成的,并尝试按如下方式实现它: Socket socket = new Socket(); vpnService.protect(socket); socket.connect(new InetSocketAddress( header.getDestinationAddress(), // From my IP datagram header body.getDestinationPort())); // From the TCP datagram header 不幸的是,这种方法导致环回VPN接口。 虽然上面的代码只是阻塞并最终超时,但我通过从一个单独的线程调用Socket.connect(InetSocketAddress)来观察环回; 连接直接返回到我的VpnService的输入流,并重复该过程。 不用说,这会导致循环。 我觉得这样做的原因是在创建套接字时(以及随后调用VpnService.protect(Socket) ),我还没有设置目标IP和端口。 这似乎确实如此,因为通过在我的VpnService实现中重写VpnService.protect(Socket)和VpnService.protect(int)并在两种情况下调用supers都会返回false。 如何正确保护套接字连接?

Android 4.0 / ICS – 操作栏上的应用程序图标无法点击

出于某种原因,在使用Ice Cream Sandwich在我的摩托罗拉Xoom上进行测试时,即使我已经实现了事件处理程序,操作栏中的应用程序图标也不可点击。 这只在将targetSdkVersion更改为15后才会发生。如果它是13,它仍然是可点击的,即使在ICS上也是如此。 为什么会发生这种情况,如何让它像按钮一样点击? 我搜索了文档,找不到任何东西。 谢谢。 更新:这是我的代码: AndroidManifest.xml中: … … BaseActivity.java(我的活动都inheritance自这个类: … @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // app icon in action bar clicked; go home Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return true; default: return super.onOptionsItemSelected(item); } } …

使用CalendarContract阅读今天的所有活动 – Android 4.0+

我正在尝试使用Android的新日历API来阅读今天的所有日历活动。 我无法在数据库查询中find正确的选择以返回所有事件。 似乎所有经常性和全天活动都被排除在选择之外。 什么选择args允许我从日历api获取今天的所有事件? 这是我目前的尝试: Cursor cur = null; String selection = “((” + CalendarContract.Events.DTSTART + ” >= ?) AND (” + CalendarContract.Events.DTEND + ” <= ?))"; Time t = new Time(); t.setToNow(); String dtStart = Long.toString(t.toMillis(false)); t.set(59, 59, 23, t.monthDay, t.month, t.year); String dtEnd = Long.toString(t.toMillis(false)); String[] selectionArgs = new String[] { dtStart, dtEnd […]

Android Actionbar项目为三个点

我有一个主要活动的菜单(res / menu / main_menu.xml),我只想在Actionbar上有一个项目,其余项目将隐藏在三个点菜单下。 问题是,我从未在操作栏上看到三个点项目。 为什么我看不到三个点项目? 如何强制隐藏物品? 注意:我使用minSdkVersion =“14”并在AVD中测试。

ICS中的TYPE_SYSTEM_OVERLAY

在Honeycomb中,我能够使用TYPE_SYSTEM_OVERLAY创建系统覆盖,并使用FLAG_WATCH_OUTSIDE_TOUCH接收触摸。 现在ICS改变了一些东西。 我仍然可以创建系统覆盖,但我无法接触。 现在,我能够使用TYPE_SYSTEM_ALERT创建相同的内容并获得触摸,但它只是捕获touchevents,而不是像Honeycomb那样传递它们。 有任何想法吗? 亲切的问候

Tab小部件总是在android 4.0中的大写字母表中

在Android 4.0中,我将标签栏与两个小部件放在一起。 在代码中我写小alphabates(新)但在应用程序中它应该始终显示(新)如何在android 4.0中的选项卡上写小alphabates