• @BorgDrone
    link
    35 months ago

    Fragmentation is a disadvantage in this way, but it allows for a far bigger strength – democratisation of technology

    How is not supporting certain hardware features ‘democratisation’ ? This is not something users would be able to make an informed decision about, or even know about. No user goes into a phone shop and asks for a phone that has a GPU with support for SIMD-permute functions, to name one thing.

    Camera2 API for years that gives us manual camera controls.

    This is a good example. Camera2 API is still not supported by all phones, to the point they had to come up with CameraX to give hide the mess of dealing with multiple camera APIs from developers. Even then, Camera2 API is a joke compared to what you can do with AVFoundation.

    One example: on iPhone I can set up the camera to deliver full-resolution (8, 12 or 24MP depending on the model of phone) frames to my app at, at least, 30 fps. Not only can I capture full-resolution images, I can get a synchronized stream of metadata (e.g. detected faces) with these frame. In addition to processing these frames in my code, I can simultaneously write the video to a compressed video file, again in full native camera resolution, with a custom time-synchronized metadata stream.

    You can’t do anything even remotely like that on Android. You can’t get a video stream at native resolution, you’re lucky if it can do 1080p. You can’t grab raw video frames and record to a movie file at the same time. You can’t get a synchronized metadata stream. You can’t write custom metadata streams to video recordings. Hell, you can’t even get the current ISO value from the camera during live capture.

    This is just one example, but there are many more areas where Android is severely lacking in capabilities.

    Android may offer more customization options for end-users, but for developers iOS is so much more powerful that they aren’t really in the same league.

      • @BorgDrone
        link
        35 months ago

        Can you give me real world applications of any of the things you mention, that people who shoot using Android find lacking versus iPhone?

        This is not about users, this is about developers. What a user will notice is that the Android version of certain apps don’t work as well as the iOS version. We put a lot of effort into getting an acceptable user experience on Android, but there is only so much you can do. For example: on one specific image processing pipeline we use an internal resolution of 2 MP on iOS and 0.5 MP on Android. The Android version generally also runs at a much lower frame rate. Certain features may also be unavailable on Android. What the end-user will notice is that it just doesn’t feel as smooth on Android as it does on iOS.

        Android is generations ahead with hardware, on par with CPU/GPU, better NPU

        That’s hilarious.

        This is the fastest Android phone according to Geekbench, Compare to the fastest iPhone. For our specific application it’s the single-core CPU and GPU performance that matters most. (any algorithm that can be parallelised runs on the GPU, the rest doesn’t really benefit from more than 2 CPU cores).

        Of course, the benchmarks above don’t really matter, because you don’t develop for the fastest phone you need to support, you develop for the slowest. Our stuff needs to be usable by the general public, due to the nature of what we make we need support basically any phone that has any significant real world use. In practice this means that on the iOS side our stuff needs to run with decent performance on iPhone 7 (released in 2016) and later. Here are the benchmark scores for the iPhone 7.

        Now compare this to the Samsung Galaxy A14, more than 4 times lower single-core performance. Note that this is not the crappiest Android phone we need to support. Instead it’s the most popular Android phone of 2023. The oldest and slowest iPhone we need to support is still significantly faster than the most sold Android phone of last year.

        The nice thing about iPhones is that every iPhone sold is a high-end device, performance wise. Most Android phones sold are low to mid-range devices. While there is still a significant performance gap between high-end Android and high-end iPhone, the performance gap between what you actually need to support on iOS and Android is enormous.

        does not need paid apps to shoot RAW video or photo

        Neither does iPhone: Settings -> Camera -> Formats -> Apple ProRAW (photo), Apple ProRes (video).

        get current ISO value in Open Camera and plenty apps that can utilise Camera2 or CameraX APIs. There seems to be quite a bit of misinformation in there

        Please link to the API docs that describe this API. To be specific: it needs to be able to set the camera to automatically manage exposure and then read the actual ISO values chosen by the camera while it’s adjusting it’s actual exposure.

        Android is so far ahead in real world, it is comical. iPhone’s advantages are always on paper and never in reality, which as we know never matters.

        Sounds like you have never in your life written a single iOS/Android app that requires any significant amount of processing power. I wish I lived in your fantasy world where Android is on par, let alone ahead, because it’s such an enormous PITA to have to deal with this enormous performance gap. It would make my life so much easier if Android phones were just half as fast as iPhones.

        In the end I really don’t care what OS it runs, I just want to build nice things. It just gets frustrating sometimes when having to take into account all these low-end Android devices limits what you can accomplish.