Dieses Mal stelle ich ein Programm vor, das die Foto-URL in die Windows-Zwischenablage kopiert, wenn Sie Fotos auf Android aufnehmen.

Ich werde dies auf eine Weise erklären, die auch für diejenigen ohne Android-Entwicklungserfahrung leicht verständlich ist. Diejenigen, die beim Einrichten einer Entwicklungsumgebung aufgegeben haben, können mit diesem Programm problemlos Foto-URLs erhalten.
Die Android-Entwicklung mag schwierig erscheinen, aber mit IFTTT (If This Then That) können selbst Menschen ohne Programmierkenntnisse Aufgaben problemlos automatisieren. IFTTT ist in Japan möglicherweise nicht so bekannt, enthält aber tatsächlich Programmierelemente und kann auf viele Verwendungszwecke angewendet werden.
In diesem Programm stelle ich eine Methode vor, um das Foto intern zu verarbeiten, wenn Sie ein Foto auf Android aufnehmen, und letztendlich die öffentliche URL in die Windows 10-Zwischenablage zu kopieren.
Gesamtablauf
Ich werde den Gesamtablauf dieses Programms erklären. Einzelne Schritte sind nicht schwierig, aber da es viele Technologien verwendet, kann es einige Zeit dauern. Sobald Sie es jedoch verstanden haben, können Sie es auf andere Android-App-Entwicklungen anwenden.
- Wenn Sie ein Foto auf Android aufnehmen, lädt IFTTT das Foto hoch und generiert eine URL. Diese URL wird an den Server gesendet.
- Der Sinatra-Server auf Ubuntu empfängt diese Informationen, analysiert die Daten und speichert sie in einer Textdatei.
- Lesen Sie die Textdatei von WSL (Windows Subsystem for Linux) und erhalten Sie die URL. Aus Sicherheitsgründen wird die URL nicht direkt verwendet, sondern lokal heruntergeladen, verarbeitet, auf den Remote-Server hochgeladen und dann in die Zwischenablage kopiert.
Vorbereitung
Sie müssen Folgendes im Voraus vorbereiten.
- Verwenden Sie einen WiFi-Router, der Port-Weiterleitung unterstützt. Durch das Einrichten der Port-Weiterleitung können Sie von einer globalen IP-öffentlichen URL auf den lokalen Server zugreifen.
Informationen zur Router-Auswahl hier
-
Installieren Sie WSL (Windows Subsystem for Linux). Mit WSL können Sie Linux-Befehle unter Windows verwenden.
-
Richten Sie die Ruby-Umgebung ein. Ruby wird benötigt, um das Sinatra-Framework zu verwenden. Im Folgenden finden Sie das Verfahren zum Einrichten der Ruby-Umgebung.
sudo apt update
sudo apt install build-essential patch zlib1g-dev liblzma-dev ruby{,-dev} -y
sudo gem install bundler
mkdir -p /mnt/c/pg/ruby_dev && cd $_
sudo bundle init
vim Gemfile
sudo bundle install
Fügen Sie die folgenden Zeilen zur Gemfile hinzu.
gem "pry"
gem "sinatra"
Verfahren
Im Folgenden finden Sie die Schritte zum Ausführen des Programms.
- Richten Sie die Port-Weiterleitung auf Ihrem WiFi-Router ein. Durch Aktivierung der Port-Weiterleitung können Sie von außen auf den lokalen Server zugreifen.

- Erstellen Sie ein Applet in IFTTT. Verwenden Sie IFTTT, um Android-Fotos zu erkennen und Daten an den Server zu senden.
- Mounten Sie Windows-Ordner, um die Dateisynchronisation zu ermöglichen. Dies ermöglicht es Ihnen, lokale und Remote-Daten zu synchronisieren.
Führen Sie den folgenden Befehl aus.
sudo mount -t cifs //192.168.0.167/_sync_ ~/share -o user=ifgm2,pass=hoge,dir_mode=0777,file_mode=0777
- So mounten Sie Windows 10-freigegebene Ordner auf Ubuntu 18.04
- So mounten (synchronisieren) Sie Windows 10-freigegebene Ordner auf Ubuntu 16.04
- Starten Sie die Sinatra-Anwendung. Sinatra ist ein Ruby-Webanwendungsframework, das Daten von IFTTT empfängt.
Im Folgenden finden Sie ein Beispiel für Sinatra-Code.
require "sinatra"
require "open3"
require 'json'
require 'pry'
Encoding.default_external = 'UTF-8'
post "/android-photo" do
binding.pry
puts @body = request.body.read
json = JSON.parse(@body)
puts text = json["TemporaryPublicPhotoURL"]
stdout, stderr, statusCode = Open3.capture3( %( bash -ic "printf '#{ text }' > /home/yuis/share/android-photo-url.txt || echo '' " ) )
puts stdout, stderr, statusCode
end
Verwenden Sie den folgenden Befehl, um die Anwendung auszuführen.
sudo bundle exec ruby dev.rb -o 0.0.0.0
- Definieren Sie Funktionen zur Verwendung auf der WSL-Seite. Dieses Programm verwendet zwei Funktionen:
expectoundsharefile.
expecto ist ein Dienstprogramm zur Automatisierung von SSH-Verbindungen, und sharefile ist ein Dienstprogramm, das lokale Dateien auf einen Remote-Server hochlädt und die URL in die Zwischenablage kopiert.
Sie können den detaillierten Code für diese Funktionen in den folgenden Artikeln überprüfen.
- Automatisches SSH über expect zu Servern, die Passwörter nicht weglassen können
- Bash: Dateien auf Remote-Server kopieren und URL zum Teilen erhalten
- Erstes Bash: Bis zum Laden von Funktionen und Aliasen [Für Anfänger]
Außerdem werden andere Funktionen wie folgt definiert.
tmpdird()
{
: tmpdir default;
dirname=$(plaindate) && cd "${TMPDIR}" && mkdir $dirname && cd $dirname
}
plaindate()
{
date '+%Y%m%d%H%M%S'
}
random()
{
ARG1=${1:-32}
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $ARG1 | head -n 1
}
- Führen Sie auf der WSL-Seite ein Skript aus, das die Datei mit Befehlstext regelmäßig überwacht. Dieses Skript verarbeitet den Inhalt, wenn die Datei aktualisiert wird, und kopiert ihn in die Zwischenablage.
Im Folgenden finden Sie ein Beispielskript.
while true; do
echo -ne "$(isodate)\tNothing updated.\033[0K\r"
[[ -s "$SHAREDDIR/android-photo-url.txt" ]] && {
tmpdird
wget "$( cat "$SHAREDDIR/android-photo-url.txt" )"
filename="android_photo_$(random).jpg"
mv "$( command ls -1 | head -1 )" "${filename}"
pwd > ~/pwd.txt
eval "$(echo "expecto 'bash -ic \"cd \\"$(cat ~/pwd.txt)\\" ; sharefile ${filename}\"' $XSERV_PASSWORD")"
printf "Copied remote photo URL to clipboard."
> "$SHAREDDIR/android-photo-url.txt"
}
sleep 2s
done
Dieses Skript überwacht Dateien, lädt URLs herunter, benennt Dateien um, kopiert in die Zwischenablage usw.
Durch Ausführen dieser Schritte können Sie ein Programm erstellen, das Fotos auf Android aufnimmt und die Foto-URL problemlos in die Windows-Zwischenablage kopiert. Wenn Sie Probleme haben, fragen Sie bitte in den Kommentaren.