, так как я знаю эту сторону, большинство моих вопросов получили ответы, используя поискНо это кажется особенным.
Я новичок в разработке Google Android, поэтому хочу учиться на практике.Я хочу создать приложение, которое сканирует штрих-коды и отображает список возможных продуктов.Я использую ZXing (получил это отсюда!;)) Для сканирования штрих-кодов.Работает отлично.Я запрашиваю API покупок Google с отсканированным штрих-кодом и анализирую RSS-канал, так как результат есть (но в большинстве случаев это ^^).
Все это прекрасно работает.Но это занимает до четырех секунд после того, как я сканирую, приложение возвращается к моей активностиЭто кажется очень длинным, не так ли?Поэтому я решил переместить сканирующую часть в один поток, и при запросе результата из API должен быть ProgressDialog для пользователя, который знает, что там происходит.
Вот мой код:
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch (requestCode) {
case IntentIntegrator.REQUEST_CODE:
if (resultCode == Activity.RESULT_OK) {
IntentResult intentResult =
IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (intentResult != null) {
String scannedCode = intentResult.getContents();
String format = intentResult.getFormatName();
//Gets information to the scanned product by the
//Google-Shopping-API in form of a rss feed.
AndroidFeedParser afp = new AndroidFeedParser("https://www.googleapis.com/shopping/search/v1/public/products?key=" +
AndroidFeedParser.API_KEY + "&country=DE&q=" + scannedCode + "&alt=" + AndroidFeedParser.FEED_CODE);
//Parses the given rss feed and gives a FeedItem-List
List<FeedItem> item = afp.parse();
Toast toast = null;
if(item.size() < 1)
//products is NOT listed within the Google-Shopping-API
toast = Toast.makeText(this, "Dieses Produkt ist nicht in der Datenbank.", Toast.LENGTH_LONG);
else
//product is listed within the Google-Shopping-API
toast = Toast.makeText(this, item.get(1).getPrice().toString(), Toast.LENGTH_LONG);
toast.show();
Log.d("SEARCH_EAN", "OK, EAN: " + scannedCode + ", FORMAT: " + format);
} else {
Log.e("SEARCH_EAN", "IntentResult je NULL!");
}
} else if (resultCode == Activity.RESULT_CANCELED) {
Log.e("SEARCH_EAN", "CANCEL");
}
} }
Я же говорил, это работает потрясающе.Но это занимает много времени, я думаю, запрос к API стоит столько времени.Я надеюсь, что вы понимаете мой вопрос, и вы можете мне помочь!Я знаю, что должен быть реализован интерфейс Runnable и метод run (), но я не знаю, какую часть кода я должен разделить, чтобы архивировать, что пожелает выше.Пожалуйста, помогите мне!
С наилучшими пожеланиями, Басти
(Простите за мой плохой английский, я из Германии)