05-23-2023, 06:59 PM
(This post was last modified: 05-23-2023, 07:07 PM by Kevin Kofler.)
For cameras and microphone, you are probably best off targeting PipeWire (using libcamera as the backend) or a higher-level interface such as GStreamer on top of PipeWire (or even a wrapper around GStreamer, such as QtMultimedia). Though you will find that the cameras on the original PinePhone only work with libcamera if you use at least version 6.2 of the megi kernel, which most distros are not yet shipping because the camera application Megapixels (which uses low-level camera interfaces) does not yet work with that version on the original PinePhone.
As for the accelerometer (gravity sensor), it is just an IIO device, so you can access it with a file-based interface, see, e.g., https://svn.calcforge.org/viewvc/pinephone-videorec/record.sh?revision=1&view=markup#l8. Though reportedly the "device3" part actually depends on the distro, so you may be better off allowing any "device*" as long as it contains the correct files. (A device is only going to have files like "in_accel_x_raw" in its directory if it is an accelerometer.) But if all you want to know is whether we are in portrait or landscape (or reverse portrait or reverse landscape, there are 4 possible rotation angles) mode, you are better off asking Wayland directly (as done, e.g., in this Megapixels commit) or using a wrapper API like QtGui's QScreen (QGuiApplication::primaryScreen()->orientation()).
As for the accelerometer (gravity sensor), it is just an IIO device, so you can access it with a file-based interface, see, e.g., https://svn.calcforge.org/viewvc/pinephone-videorec/record.sh?revision=1&view=markup#l8. Though reportedly the "device3" part actually depends on the distro, so you may be better off allowing any "device*" as long as it contains the correct files. (A device is only going to have files like "in_accel_x_raw" in its directory if it is an accelerometer.) But if all you want to know is whether we are in portrait or landscape (or reverse portrait or reverse landscape, there are 4 possible rotation angles) mode, you are better off asking Wayland directly (as done, e.g., in this Megapixels commit) or using a wrapper API like QtGui's QScreen (QGuiApplication::primaryScreen()->orientation()).