Статьи

Использование мобильных служб Azure из Android: часть 4

 Следующие шаги
001

  1. Следующий пост будет охватывать:

    • Создание нового приложения для Android
    • Как назвать ваше приложение и модули

      • Имя приложения
      • название проекта
      • Имя пакета
    • Создание простого приложения hello world
    • Как добавить элемент управления списком
    • Понимание и добавление операторов импорта
    • Добавление кода Java для заполнения элемента управления списком строк
    • Загрузите библиотеку httpclient от Apache Foundation
    • Добавление библиотеки httpclient в наш проект Android
    • Добавление кода для вызова в мобильные службы Azure
    • Добавление разрешений, позволяющих нашему приложению Android подключаться к мобильным службам Azure.
    • Добавление всего Java-кода, необходимого для вызова мобильных служб Azure.

Часть 1 из 4: Введение в использование мобильных служб Azure с Android http://blogs.msdn.com/b/brunoterkaly/archive/2012/10/03/part-1-of-5-introduction-to-consuming-azure-mobile-services-from-android.aspx
Часть 2 из 4: Введение в использование мобильных служб Azure с Android http://blogs.msdn.com/b/brunoterkaly/archive/2012/10/03/part-2-of-5-introduction-to-consuming-azure-mobile-services-from-android.aspx
Часть 3 из 4: Введение в использование мобильных служб Azure с Android http://blogs.msdn.com/b/brunoterkaly/archive/2012/10/03/part-3-of-4-introduction-to-consuming-azure-mobile-services-from-android.aspx
Часть 4 из 4: Введение в использование мобильных служб Azure с Android http://blogs.msdn.com/b/brunoterkaly/archive/2012/10/03/part-4-of-4-introduction-to-consuming-azure-mobile-services-from-android.aspx
Скачать исходный код Android https://skydrive.live.com/embed?cid=98B7747CD2E738FB&resid=98B7747CD2E738FB%213151&authkey=AN1ukGyTBgIY76Q
Бесплатная пробная версия Azure для мобильных служб http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200114759

Вам понадобится пробная учетная запись для Windows Azure

002

  1. Пожалуйста, зарегистрируйтесь здесь:


Создание нового приложения (Android, конечно)

003

  1. Это предполагает, что вы установили:

    • Затмение
    • Android SDK и набор инструментов

Наименование вашего проекта Android

004

  1. Здесь вы укажете:

    • Имя приложения
    • название проекта
    • Имя пакета

Выбор изображений по умолчанию, картинки и текста

005

  1. Вот как вы можете маркировать свое приложение
  2. Мы просто выберем значения по умолчанию

Выбор пустой активности по умолчанию

006

  1. Мы будем строить все с нуля, вместо того, чтобы инструментарий давал нам интерфейс мастер / детали.
  2. Мы просто добавим один элемент управления списком

Выбор имени активности по умолчанию

007

  1. Называя нашу деятельность.
  2. Это приведет к тому, что некоторые из основных файлов интерфейса пользователя и код будут названы

Просмотр проекта по умолчанию, созданного мастером Eclipse

008

  1. Теперь мы начнем редактировать код и строить интерфейс

Запуск шаблона Android по умолчанию

009

  1. Давайте запустим приложение, чтобы увидеть интерфейс Hello World по умолчанию
  2. Мы добавим наш собственный код в ближайшее время.

Просмотр запущенного проекта

010

  1. Это просто чтобы убедиться, что все инструменты работают.
  2. Честно говоря, эмуляторы не совсем надежны.
  3. Во многих случаях мне приходилось запускать образцы несколько раз, чтобы увидеть правильный результат.

Работа с элементом управления ListView

011

  1. Адаптеры и элементы управления ListView

    • ListView получает свои данные через адаптер.
    • Адаптер также определяет способ отображения каждой строки в ListView.
    • Адаптер назначается списку с помощью метода setAdapter объекта ListView.
    • Android предоставляет несколько стандартных адаптеров; мы будем использовать ArrayAdapter

      • ArrayAdapter может обрабатывать данные на основе массивов или java.util.List.

Открытие текстового редактора и добавление элемента управления ListView

012

  1. Теперь мы добавим наш элемент управления ListView
  2. Это простой случай изменения этого файла XML

Реализация элемента управления ListView

013

  1. Нам просто нужно вставить следующий код.
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
 
    <ListView
        android:id="@+id/mylist"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:context=".MainActivity" >
    </ListView>
 
</RelativeLayout>

Изменение MainActivity.java — добавление операторов «import»
014

  1. Я представлю весь модуль исходного кода (MainActivity.java) в ближайшее время
  2. Эти операторы импорта необходимы для просмотра списка
  3. Для кода httpclient, необходимого для вызова мобильных служб Azure, потребуется больше

Добавление кода в onCreate ()

+015

  1. onCreate () — метод запуска, в который мы можем добавить некоторый код.
  2. Мы заполним элемент управления listview некоторыми простыми строками.

    • В следующем разделе мы позвоним в мобильные службы Azure для получения данных.
    • Но сначала давайте разберемся с управлением списком.
  3. Сначала мы добавим некоторый код для добавления элементов в элемент управления ListView.
  4. Обратите внимание на следующее:

    • Мы получаем идентификатор для элемента управления ListView, чтобы мы могли поговорить с ним (примечание 1)
    • Создайте строковый массив того, что мы добавим в просмотр списка (примечание 2).
    • Создайте ArrayAdapter и свяжите строки из предыдущего шага. (заметка 3)
    • Свяжите ArrayAdapter с элементом управления ListView (примечание 4).

Просмотр приложения до сих пор

016

  1. Наш простой пример работает до сих пор.
  2. Следуй этим шагам:

    • В меню выберите «Выполнить / Отладить как / Приложение Android».

Загрузите библиотеку httpclient

+017

  1. Следуй этим шагам:

    • Ссылка находится в верхнем лифте.
    • Это будет почтовый файл.
    • Извлеките httpclient-4.2.1.jar в папку.
    • Перейдите в папку.

Копирование библиотеки httpclient в наш проект

018

  1. Это необходимо, потому что мы будем звонить в мобильные службы Azure.

    • httpclient.jar содержит код, который позволяет использовать для вызовов http нашу мобильную службу Azure.

Редактирование кода для вызова в мобильной службе Azure

019

  1. Значения массива теперь будут заполняться значениями, которые мы получаем из мобильной службы Azure.
  2. Несколько вещей, на которые стоит обратить внимание:

    • URL-адрес, который будет вызывать клиент Android:


Открытие файла AndroidManifest.xml

020

  1. Нам нужно разрешить подключение к интернету для нашего приложения.
  2. Это делается в файле AndroidManifest.xml

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.androidandmobileservices"
    android:versionCode="1"
    android:versionName="1.0" >
 
   <uses-permission android:name="android.permission.INTERNET"></uses-permission>
 
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
 
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>

021

  1. Наше приложение потерпит неудачу без этой строки.
  2. Требуется.

Добавление кода в MainActivity.java

022

  1. Теперь вы измените файл MainActivity.java для вызова мобильных служб Azure.
  2. Вы будете две вещи из портала, чтобы написать этот код:

    • URL-адрес для мобильных служб Azure
    • Идентификатор приложения для мобильных служб Azure
  3. Есть много важных заявлений, чтобы добавить
package com.example.androidandmobileservices;



import android.os.Bundle;
import android.app.Activity;

import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;

// Add these import statements
import android.util.Log;     // for logging

import org.json.JSONArray;   // for JSONArray
import org.json.JSONObject;  // for JSONObject

import java.io.InputStream;         // for reading the response as bytes
import java.io.BufferedInputStream; // for reading the response as buffered bytes  
import java.io.BufferedReader;      // for reading bytes in a buffered manner
import java.io.InputStreamReader;   // for reading bytes into BufferedReader
import java.net.HttpURLConnection;  // for HttpURLConnection
import java.net.URL;                // for URL


public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Define needed constants: (1) url to our mobile service; 
        // (2) service app id (from Azure Mobile Service Website)
        final String mobileServiceUrl = 
                "https://brunotodoservice.azure-mobile.net/tables/TodoItem";
        final String mobileServiceAppId = 
                "FIoFunrUPBDhaFmmEXFHJCZoFEZILW45";
        try
        {
            // Start building the request object to get the data 
            URL url = new URL(mobileServiceUrl);

            // Build a request object to connect to Azure Mobile Services
            HttpURLConnection urlRequest = (HttpURLConnection) url.openConnection();

            // Reading data so the http verb is "GET"
            urlRequest.setRequestMethod("GET");

            // Start building up the request header
            // (1) The data is JSON format 
            // (2) We need to pass the service app id (we get this from the Azure Portal)
            urlRequest.addRequestProperty("Content-Type", "application/json");
            urlRequest.addRequestProperty("ACCEPT", "application/json");
            urlRequest.addRequestProperty("X-ZUMO-APPLICATION", mobileServiceAppId);

            // We hold the json results
            JSONObject[] todos = null;

            // The listView control that will populate with data
            ListView listView = (ListView) findViewById(R.id.mylist);
            
            try    
            {
                // Prepare some objects to receive the bytes of data
                // from the Azure Mobile Service
                InputStream in = new BufferedInputStream(
                        urlRequest.getInputStream());
                BufferedReader bufferReader = new BufferedReader(
                        new InputStreamReader(in));

                // responseString will hold our JSON data
                StringBuilder responseString = new StringBuilder();
                String line;

                // Loop through the buffered input, reading JSON data
                while ((line = bufferReader.readLine()) != null) 
                {
                    responseString.append(line);
                }

                // Convert responseString into a JSONArray
                JSONArray jsonArray = new JSONArray(responseString.toString());

                // Will hold an array of JSON objects
                todos = new JSONObject[jsonArray.length()];

                // values is very important. It is the string array that will
                // get assigned to our ListView control.
                String[] values = new String[jsonArray.length()];
                String s;

                // Loop through the objects. The ultimate goal is to have
                // an array of strings called "values"
                for (int i = 0; i < jsonArray.length(); i++) 
                {
                    todos[i] = jsonArray.getJSONObject(i);
                    values[i] = todos[i].get("text").toString();
                }

                // Create an array adapter using the string array called "values"
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1, android.R.id.text1, values);
    
                // Assign adapter to ListView
                listView.setAdapter(adapter); 
    
            
            } catch (Exception ex) {
                Log.e("MainActivity Failure", "Error getting JSON from Server: "+ ex.getMessage());
            } finally {
                urlRequest.disconnect();
            }
          } catch (Exception ex) {
            Log.e("MainActivity Failure", "Error opening HTTP Connection: " + ex.getMessage());

       }
        
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

Вывод
023

  1. Теперь мы закончили и усвоили следующие уроки:

    • Как настроить наши мобильные службы Azure
    • Как добавить таблицы, вставить данные в реляционную базу данных
    • Как использовать http для выдачи команд GET и POST
    • Как использовать низкоуровневые инструменты (Fiddler) для взаимодействия с мобильными службами Azure
    • Как создать приложение для Android для чтения данных из мобильных служб Azure.
  2. Я прощаюсь с вами. Спасибо за чтение.

Вам понадобится пробная учетная запись для Windows Azure

024

  1. Пожалуйста, зарегистрируйтесь здесь:


Спасибо ..

Я ценю, что вы нашли время, чтобы прочитать этот пост. Я с нетерпением жду ваших комментариев.