2012-03-06 81 views
1

用途?这个问题是关于如何把Android硬件和操作系统变成一个界面。这将是我们自己的硬件,永远不会离开大楼,并运行我们创建的任何程序。 为什么? Android内置电池备份,防盗探测(GPS),优雅的触摸屏和熟悉的编程界面。Android是否支持锁定到完全替换的界面?

我想要什么:

  1. 我能要求不管按下屏幕上的内容,用户永远不会离开我的应用程序?

    是否有说明要做到这一点,是正式支持或我将不得不开始劈砍而去? (使用系统级界面,删除语音激活(当用户按住搜索按钮时),禁用自动更新等)

    理想情况下,我想只写一个替换整个界面的应用程序,而我想要一种方式来挂钩应用程序,而无需额外的工作(植根电话并手动删除某些内置应用程序)。

  2. 我还想将USB锁定为“仅收费”模式,以防止未经我的应用程序批准安装文件系统。我不关心一个真正坚定的人打开设备并安装内部存储单元的文件系统。

  3. 如果发生崩溃,我想要第二个应用程序决定是否重新启动第一个应用程序。

很明显,我不希望手机变得无法使用,即使它只是备用硬件。

+3

不支持股票固件。你将不得不编写自定义固件。我不相信这是官方支持的。 – 2012-03-06 20:04:08

+0

我真诚希望它不可能 – slezica 2012-03-06 20:05:31

+0

@uʍopǝpısdn,请注意,这是一个事件,当我有硬件,并且愿意使用root-ed手机的命令行界面时。在这种情况下,我认为这不可能是重要的。 – 2012-03-06 20:16:29

回答

1

我假设Android可以在Wi-Fi唯一的互联网接入下运行,如果我拒绝支付无线订阅。 (这当然意味着没有电话服务)

一般来说,答案是肯定的。一些设备制造商/运营商比其他设备更容易。例如,它可能会尝试在启动时自动将您连接到电话注册系统,即使它始终会失败。它可能不会退出尝试。所以每次手机启动时都必须取消。

我可以要求无论屏幕上按什么按键,用户都不会离开我的应用程序吗?

不,谢天谢地。

是否有指示要做到这一点,是官方支持还是必须开始黑客入侵?

它不被支持,并希望100%不可能在所有设备上消费者的手中。否则我们有很大的问题。

我在想,如果手机是“root-ed”,那么像语音激活应用程序可以卸载,主屏幕可以被替换。

该设备不需要植根到安装替换主屏幕并将其设置为默认使用。要移除安装为系统级应用程序(可能是语音搜索)的东西,它需要根植于其中。

即使您设法摆脱语音搜索作为摆脱应用程序的可能方式。用户仍然可以长时间在家中并从最近推出的列表中选择不同的应用程序...

如果您想禁用用户可能离开应用程序的所有可能方式,修改固件以允许这一点。然后,您的应用程序只能在运行您自己版本的操作系统的设备上正常工作。

+0

**保持主页按钮**只会显示最近使用的应用程序,理论上,我的应用程序是最近使用的唯一一个。 :) **禁用所有可能的方式离开**,我只是想知道还有什么其他渠道可以使用,我没有解决?我知道我可能无法获得所有这些,但只是想知道在合理的范围内能做什么,不能做什么,以及以什么方式开始。 – 2012-03-06 20:12:04

+0

这是真的。我一直在想这个设备仍然会用于其他的事情,但是在使用你的设备时会被锁定。我猜你可能实际上可以制作一个操作系统的副本,其中不包含除你以外的其他应用程序......您定位的是哪个SDK版本? 3.0+的底部栏将允许用户访问“设置”,将他们从你的应用程序中删除=/ – FoamyGuy 2012-03-06 20:16:39

+0

点号3是[句柄](http://stackoverflow.com/a/9590851/463304#comment12164687_9591107 )。 – 2012-03-07 21:01:49

2

这不能通过简单地编写应用程序来实现。你一定需要在ROM上做一些定制。我不知道任何官方指示来支持这一点。你似乎有正确的想法。删除不必要的应用程序并用您的应用程序替换主屏幕应该会让您非常满意。根据ROM,您也可能需要卸下系统托盘。使用正确的ROM也应该很容易。如果这一切都不在同一个地方,你就必须自己做饭。

2

不是。

您可以实现您的应用程序以接收主屏幕Intents,以便当设备打开时,或者您按Home键时,它将获得Intent。然而,你有股票主屏幕和你的应用程序注册这些意图,设备的用户可以决定哪些将是默认处理程序。

对于第三点,应用程序崩溃由现代版本的Android中的操作系统处理。我相信这在老版本中是可行的,但现在不再了。

这是您可以使用股票Android做的最好的。如果你想做的不止这些,你必须修改系统本身。您也无法以您描述的方式控制/限制对USB端口的访问,而无需修改内核。

+0

我喜欢自定义主屏幕的想法!我不知道这是可能的。 – 2012-03-06 20:37:47

+0

不是一种常见的做法,但它可以在某些使用情况下有效(如yours,methinks)。 – jeffsix 2012-03-06 20:40:14

+0

我认为这将解决崩溃问题,因为我认为崩溃只会做以下三件事之一:1.将您带回主屏幕,2.通过启动市场相关应用程序报告错误(我打算卸载),或3.重新启动应用程序。 – 2012-03-06 20:41:43

1

我已经实施了一个应用程序,它和你有类似的要求,你可以在这里阅读我的博客文章Android auto-updating homescreen application。下面是你的一些问题的答案:

我可以要求不管屏幕上按什么,用户永远不会离开我的应用程序?

是否有指示要做到这一点,是否正式支持,还是我必须开始>黑客入侵? (使用系统级界面,删除语音激活(当用户按住搜索按钮时),禁用自动更新等)

理想情况下,我想只写一个代替整个界面的应用程序,并且我想要一种方式来挂钩应用程序,而无需额外的工作(根植手机并手动移除内置的特定应用程序)。

据我所知,有两种方法可以做到这一点,一种是使用Homescreen应用程序,另一种是使用“系统警报窗口”,我认为你熟悉这两种选项。

我还想锁定USB进入“仅充电”模式,以防止未经我的应用程序的批准安装>文件系统。我并不关心一个真正坚定的人>打开设备并挂载内部存储单元的文件系统。

我不确定这是否有可能,但如果您的电话安装了busybox,则可以使用低级别的Linux命令。对不起,在这里没有太多的帮助。

在发生碰撞的情况下,我想有决定是否要>重启第一应用的第二应用

这是可能的,我相信,例如,如果你把一个看看现有的Android“崩溃报告”工具,如Acra,你会看到处理崩溃的例子,你需要做的是处理UncaughtExceptionHandler(这两种方法是你的朋友Thread.getDefaultUncaughtExceptionHandler()Thread.setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler eh))。一旦处理程序从那里设置,您可以决定做什么(确保不要默默处理异常,您必须让它通过,以便Android可以执行必要的清理)。现在,如果您的应用程序是默认主屏幕,那么在发生崩溃时,Android会自动为您重新启动应用程序。如果它不是主屏幕应用程序,那么当发生崩溃时,您可以触发一个意图重新启动您的应用程序。

希望它有帮助。

+0

理论上讲,如果您使用的是系统级对话框,则用户将无法看到离开仅收费模式的选项。 – 2012-05-14 12:48:23

+0

这是正确的!在这种情况下,HomeScreen应用似乎是比使用系统级对话更好的选择。在附注中,我很想知道您是否以编程方式控制USB充电模式,据我所知,没有可用的API。 – Arnab 2012-05-14 14:16:58

+0

***“在这种情况下,HomeScreen应用程序似乎是一个更好的选择”***,稍等片刻,我**不希望用户离开收费模式**,鉴于额外的信息,你现在和我在一起,相反会是真的吗? (系统级别比主屏幕更好)***“以编程方式控制USB充电模式”***,不是真的,我可以进入设置并将其设置为仅手动充电。我只是试图确保我可以在完成后锁定该选项(系统级对话框可能会工作)。我不希望其他人将代码注入手机。 – 2012-05-14 16:59:10