Я новичок в программировании на Android, и я создаю приложение, которое работает следующим образом: после получения ввода из SMS с некоторыми «командами» (в форме -COMMAND fileName), он считывает содержимое сообщения и выполняет определенные мультимедийные операции в другой деятельности приложения.Как я могу вызвать два метода в одной и той же Деятельности, которая будет работать в том же файле, но в разное время?
Проблема заключается в том, что когда в одном SMS есть команды, которые работают с одним и тем же файлом (например, «-SHOTPHOTO photo1 -SENDPHOTO photo1»), приложение вызывает оба метода для этого, но только первый выполняется правильно; другой возвращает ошибку, потому что фотография все еще не была сделана.
// onCreate of the new Activity
// I received an Intent from an SMS Broadcast Receiver
// The commands and file names are saved in order in command[nCommands] and files[nFiles], nCommands and nFiles are integer and represents the number of commands/file names
for (int i = 0; i < nCommands; i++) {
switch (command[i]) {
case "-SHOTPHOTO":
// finds the correct file name of this command
shotphoto(files[j]);
break;
case "-SENDPHOTO":
// finds the correct file name of this command
sendphoto(files[j]);
break;
}
}
// end of onCreate
public void shotphoto (String photoName) {
// standard method to take photos: calls the default camera app with startActivity
// takes photo and then renames it to photoName
// photo saved in the ExternalStorage, in my app folder
}
public void sendphoto(String photoName) {
// standard method to send email + photo: calls the default mail app with startActivity
// gets the photo from my app's folder in the ExternalStorage
// the photo is sent to the sender's mail address, which is already known
}
У меня нет никакой проблемы, когда две команды находятся в двух разных сообщений или при наличии, например, -SHOTPHOTO photo1 в сообщение и -SHOTPHOTO Фото2 -SENDPHOTO фото1 в другом сообщении. Я протестировал процесс контроля чтения и исправления, и у него нет проблем. Так что я думаю, что моя проблема в том, что оба метода выполняются одновременно, а sendphoto() не находит фотографию, потому что она еще не была сделана.
Некоторая идея о том, как сделать два метода синхронными, так что первая команда всегда выполняется до второго, а вторая ждет завершения первого?
Я не буду добавлять команду «-SHOTNSEND photoName», потому что это не то, что я хочу. Добавление sendphoto() в конец shotphoto() не позволит мне сделать снимок, не отправив его.
Код, который я написал здесь, является просто базовым примером реального кода, сообщите мне, если что-то неясно или что-то действительно важное отсутствует.
Вместо того, чтобы делать очереди со всеми командами. И выполните следующую команду, когда первый закончен – X3Btel
Спасибо за ваш ответ, я попробую его как можно скорее! –