【问题标题】:Limitations of android安卓的局限性
【发布时间】:2013-06-08 04:56:03
【问题描述】:

我需要构建一个应用程序来获取相机图像并将其上传到要进行一些处理并返回真/假的网络。我在这方面遇到了一些问题,希望能得到澄清。

1.) 有什么方法可以让我的应用知道 Android 相机正在捕获的图像? 我从这里 (Android: BroadcastReceiver intent to Detect Camera Photo Taken?) 了解到的是,无论何时将图片添加到手机中,我们都可以知道,无论是通过蓝牙还是通过相机捕捉或其他方式。 任何方式都很好。 问题是我的应用程序不需要在后台运行以检测媒体商店的变化吗? 如果是这种情况,我可以让我的应用程序打开相机然后捕捉图像这将在功率方面更有效。

2.) 从安卓手机发送到网络的图片大小有什么限制吗? 考虑到安卓手机的内存比较少等等。(我是问这个问题,我在另一个应用程序中遇到了类似的问题,我需要做一些事情,比如增加亮度、对比度等。当图像大小大于 10MB 时,应用程序崩溃了。

“我不想重新发明轮子并浪费我的时间”:)

【问题讨论】:

    标签: android web-services image-processing mediastore


    【解决方案1】:

    1.) 在 Android 开发中有效地存在这种机制,它已经被大量使用并且已经为您完成了 :) 这个机制叫做Intent,你只需要在你的应用程序中声明它,系统会为你调用你注册的组件

    2.) 这里没有限制,但是您必须小心使用后台线程或服务发送它(不要阻塞 UI 线程)并处理连接超时等

    是的,高效的工作不需要重新发明轮子!

    【讨论】:

    • 只是补充一点,不要将“异步线程”误认为是 AsyncTask。 AsyncTasks 不是任何 HTTP 东西的地方,当然也不是长期运行的东西。
    • 是的,你说的很对,我指的不是AsyncTask,我会改写一下以避免误解:)
    • 您确定要发送图片吗?为什么我再次问是因为,我需要打开图像转换为字节,然后只有我可以发送它们,当它们很大时,无法在 android 手机中打开/读取图像,通常大于 10MB,应用程序崩溃(除非我们使用 NDK 或我目前无法做到的事情)。你怎么看?
    • 为避免 OOM,您必须发送具有有限读取字节和 while 循环的大文件,您可以在此处找到示例:stackoverflow.com/questions/9745514/…(记得刷新)
    • 有多种方法可以避免在内存中打开/保留大文件,例如 HttpURLConnection.setChunkedStreamingMode(int):developer.android.com/reference/java/net/…
    【解决方案2】:

    尝试回答您的问题;

    1) 注册 BroadcastReceiver 并不能真正转化为让您的应用在后台 24/7 全天候运行。这就像你在系统中注册你的应用程序,它会在需要时启动并通知它。只要您不在非常常规的广播中做耗电的事情,您就不必担心拥有这些接收器会耗尽电池。

    2) 实际上并没有任何限制,尽管您应该明白发送 100mb(可能通过某人的 3G 连接)不会让任何人开心。 如果您以前的应用程序在尝试发送 10MB 时崩溃,您可能以错误的方式将其设为 base64 字符串。我不确定您要将它上传到哪种服务器,但您想找到一些代码示例,将图像以小块的形式缓冲到服务器。 另请注意,在手机上,您永远无法确定连接是否稳定。

    【讨论】:

    • @Stefan.. 1)要让广播接收器工作,应用程序不需要处于运行状态或最小化状态吗? 2)以前的应用程序崩溃,因为我试图在手机内部进行图像处理,这需要我读取大小> 10MB的图像的图像数据。我希望你明白我的意思。
    • 没有,一旦系统知道您的接收器,它就会为您处理呼叫。您不必在后台运行您的应用程序(但如果需要,您也可以)
    • @Plumillon.. 所以只有当接收者收到通知(在这种情况下媒体商店发生变化)时,我想才需要打开应用程序。
    • @SreekanthKarumanaghat 就像我说的那样,您应该将其进行比较:系统为每次广播保留所有已注册应用程序的列表,并简单地启动这些应用程序的接收器并通知它们。他们在接到电话并开始做某事之前不会使用电池。
    • 是的,这是由 Android 完成的,它将触发您实现的方法,您可以在其中执行所有您想要的操作
    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 2017-10-15
    • 2013-10-18
    • 1970-01-01
    • 2011-04-01
    相关资源
    最近更新 更多