-#!/system/bin/sh
-
+#!/bin/sh
set -e -u
+SCRIPTNAME=termux-camera-photo
show_usage () {
- echo "usage: termux-camera-photo [OPTIONS] <output-file>"
- echo ""
- echo "Take a photo and save it in a file. Valid options:"
- echo " -c, --camera <camera-id> the ID of the camera to use"
- echo "Use termux-camera-info for information about available camera IDs."
+ echo "Usage: termux-camera-photo [-c camera-id] output-file"
+ echo "Take a photo and save it to a file in JPEG format."
+ echo " -c camera-id ID of the camera to use (see termux-camera-info), default: 0"
+ exit 0
}
-PARAM_CAMERA=""
-PARAM_SIZE=""
-O=`getopt -l camera: -l help -l size -- c:hs: "$@"`
-eval set -- "$O"
-while true; do
-case "$1" in
- -c|--camera) PARAM_CAMERA="--ei camera $2"; shift 2;;
- -h|--help) show_usage; exit 0;;
- -s|--size) PARAM_SIZE="--ei size_index $2"; shift 2;;
- --) shift; break;;
- *) echo Error; exit 1;;
-esac
+
+PARAMS=""
+while getopts :hc: option
+do
+ case "$option" in
+ h) show_usage;;
+ c) PARAMS="--es camera $OPTARG";;
+ ?) echo "$SCRIPTNAME: illegal option -$OPTARG"; exit 1;
+ esac
done
+shift $(($OPTIND-1))
-touch $1
-FILE=`realpath $1`
+if [ $# = 0 ]; then echo "$SCRIPTNAME: missing file argument"; exit 1; fi
+if [ $# != 1 ]; then echo "$SCRIPTNAME: too many arguments"; exit 1; fi
-# Output is like:
-# Broadcasting: Intent { cmp=com.termux.api/.PhotoActivity }
-# Broadcast completed: result=13, data="http://fornwall.net"
-OUTPUT=`am start --user 0 $PARAM_CAMERA $PARAM_SIZE --es file $FILE -n com.termux.api/.PhotoActivity | grep result=1 | cut -d ' ' -f 4`
+touch $1
+PARAMS="$PARAMS --es file `realpath $1`"
-if [ $? != "0" ]; then
- echo "termux-camera-photo failed - see logs by executing 'adb logcat -s termux-api:*'"
- exit 1
-fi
+@TERMUX_API@ CameraPhoto $PARAMS