
필요한 바이너리가 있는지 확인합니다.
busybox 와 sqlite3 가 있어야 정상 동작하므로 사전에 체크하고 없으면 종료해버립니다.
bins="busybox sqlite3"
for binary in $bins ; do
bin=`which $binary`
if [ -z $bin ]
then
echo
echo ${yellow}"No $binary Binary."
echo "Needs : "$bins${N}
exit
fi
done
which 명령은 바이너리가 있는 위치를 반환하는데 그 값이 null 이면 그 바이너리가 설치되지 않은 거지요.
예를 들어서 which busybox 이렇게 실행하면 /system/bin/busybox 이렇게 반환됩니다.
echo
echo ${cyan}"╔══════════════════════════════╗"
echo "║ Making Muted Camera. - MELFY ║"
echo "╚══════════════════════════════╝"${N}
수정해야 하는 xml 파일과 db 파일의 경로 설정입니다.
fxml=/system/csc/feature.xml
dbset=/data/data/com.android.providers.settings/databases/settings.db
echo
echo ${yellow}"Checking Original Files"${N}
현재 설정값을 읽어옵니다.
cur1=$( cat $fxml | grep "ShutterSoundMenu" | cut -d">" -f2 | cut -d"<" -f1 )
xml 중에서 ShutterSoundMenu 문자열이 있는 행을 뽑고 > 우측 괄호로 나눴을때 두번째 오른쪽 부분을 자르고 다시 < 좌측 괄호로 나눴을때의 좌측 첫번째 부분을 자릅니다.
문자열이
cur2=$( sqlite3 $dbset "SELECT value FROM system WHERE name = 'csc_pref_camera_forced_shuttersound_key' ;" )
sqlite3 바이너리로 csc_pref_camera_forced_shuttersound_key 값을 뽑습니다.
echo
echo ${yellow}"Current Status"${N}
echo
echo "xml : "$cur1
echo "db : "$cur2
해당값이 존재하지 않을 경우 지원하지 않는 경우이므로 아래 구문은 호환성 여부를 알 수 있습니다.
if [ -z "$cur1" ] || [ -z "$cur2" ] ; then
echo
echo ${purple}"INCOMPATIBLE"${N}
exit
fi
echo
현재 상태가 무음으로 설정된 경우인지 확인합니다.
true 이고 0 이면 이미 무음처리 된 경우이므로 그냥 종료합니다.
if [ "$cur1" = "true" ] && [ "$cur2" = "0" ] ; then
echo ${cyan}"Already MUTED."${N}
else
echo ${green}"Not MUTED."${N}
####################
echo
echo ${yellow}"feature.xml Tweak"${N}
#feature.xml tweak
sed -i '/ShutterSoundMenu/s/false/true/g' $fxml
feature.xml 에서 ShutterSoundMenu 문자열이 존재하는 행을 뽑아서 s (substitution) 대체 합니다. false 를 true 로 바꿔줍니다.
마지막 g 는 여러개의 라인이 존재하는 경우 전체 모두를 수정하게 합니다.
feature.xml 을 열어서 수동으로 수정하는 작업을 자동화 한겁니다.
echo
echo ${yellow}"settings.db Tweak"${N}
#settings.db tweak
sqlite3 $dbset "UPDATE system SET value = 0 WHERE name = 'csc_pref_camera_forced_shuttersound_key' ;"
설정 db 에서 system 테이블의 name 이 csc_pref_camera_forced_shuttersound_key 인 value 값을 0 으로 수정합니다.
echo
echo ${cyan}"DONE."${N}
echo
####################
fi
echo
echo ${cyan}"════════════════════════════════"${N}
exit
이 스크립트는 2개 (xml 과 db) 를 바꿔주고 카메라 어플에서 촬영음 해제, 사용을 직접 설정할 수 있게 됩니다.
추신)
카메라 무음을 만드는 여러 방법중에 어플에서 설정하는게 논리적으로는 가장 적합해 보입니다.
커널에서 카메라 무음을 만드는 방법이 있고 (arter97님+xens커널)
갤3 경우에는 volume.db 상황을 설정하기도 하지요.
ogg 파일을 모두 빈파일로 교체하기도 하고...
방법은 여러개네요 ^^*
