Lecture11_ne_do_kontsa.pptx
- Количество слайдов: 14
Разработка мобильных приложений под Android Лекция 11 Чиркунов Кирилл cyril. chirkunov@computer. org vk. com/chirkunov
Лекция 11, слайд 1 На прошлой лекции • Web services • Web API • Cloud Messaging Service Новосибирский государственный университет, 2012
Лекция 11, слайд 2 Сегодня • Cloud Backup • Wi-Fi Direct Новосибирский государственный университет, 2012
Лекция 11, слайд 3 Backup Agent abstract void on. Backup(Parcel. File. Descriptor old. State, Backup. Data. Output data, Parcel. File. Descriptor new. State) abstract void on. Restore (Backup. Data. Input data, int app. Version. Code, Parcel. File. Descriptor new. State) <manifest. . . >. . . <application android: label=“Test. Application” android: backup. Agent=“Test. Backup. Agent“ [android: restore. Any. Version="true|false“]> <activity. . . >. . . </activity> <meta-data android: name="com. google. android. backup. api_key" android: value=“api. Key" /> </application> </manifest> https: //developer. android. com/google/backup/signup. html - регистрация бэкап-сервиса Новосибирский государственный университет, 2012
Лекция 11, слайд 4 Backup Manager Backup. Manager backup. Manager = new Backup. Manager(app. Context); void data. Changed() Уведомляет системную службу бэкапов о том, что состояние приложения изменилось и требуется бэкап request. Restore (Restore. Observer observer) Шлет запрос в службу бэкапов на восстановление с последней сохраненной точки Новосибирский государственный университет, 2012
Лекция 11, слайд 5 Restore Observer • void on. Update (int now. Being. Restored, String current. Package) • void restore. Finished (int error) • void restore. Starting (int num. Packages) Новосибирский государственный университет, 2012
Лекция 11, слайд 6 Backup Helpers Shared. Preferences. Backup. Helper • Отвечает за сохранение/восстановление настроек приложения File. Backup. Helper • Отвечает за сохранение/восстановление внутренних файлов приложения Новосибирский государственный университет, 2012
Лекция 11, слайд 7 Backup Helpers public class App. Backup. Agent extends Backup. Agent. Helper { static final String PREF_COLOR = "color_preference"; static final String PREF_LIGHT_ON = "light_preference"; static final String APP_PREFS_BACKUP_KEY = "app_prefs"; void on. Create() { Shared. Preferences. Backup. Helper helper = new Shared. Preferences. Backup. Helper(this, PREF_COLOR, PREF_LIGHT_ON); add. Helper(APP_PREFS_BACKUP_KEY, helper); } } Новосибирский государственный университет, 2012
Лекция 11, слайд 8 Пример реализации On. Backup Byte. Array. Output. Stream buf. Stream = new Byte. Array. Output. Stream(); Data. Output. Stream out. Writer = new Data. Output. Stream(buf. Stream); out. Writer. write. UTF(m. Color); // color out. Writer. write. Int(1); // light is on byte[] buffer = buf. Stream. to. Byte. Array(); int len = buffer. length; data. write. Entity. Header(APP_BACKUP_KEY, len); data. write. Entity. Data(buffer, len); Новосибирский государственный университет, 2012
Лекция 11, слайд 8 Пример реализации On. Backup Byte. Array. Output. Stream buf. Stream = new Byte. Array. Output. Stream(); Data. Output. Stream out. Writer = new Data. Output. Stream(buf. Stream); out. Writer. write. UTF(m. Color); // color out. Writer. write. Int(1); // light is on byte[] buffer = buf. Stream. to. Byte. Array(); int len = buffer. length; data. write. Entity. Header(APP_BACKUP_KEY, len); data. write. Entity. Data(buffer, len); Новосибирский государственный университет, 2012
Лекция 11, слайд 10 On. Restore while (data. read. Next. Header()) { String key = data. get. Key(); int data. Size = data. get. Data. Size(); // Проверяем, наш ли ключ if (APP_BACKUP_KEY. equals(key)) { // Создаем поток для чтения byte[] data. Buf = new byte[data. Size]; data. read. Entity. Data(data. Buf, 0, data. Size); Byte. Array. Input. Stream ba. Stream = new Byte. Array. Input. Stream(data. Buf); Data. Input. Stream in = new Data. Input. Stream(ba. Stream); // Читаем цветовую гамму и состояние подсветки color = in. read. UTF(); is. Light. On = in. read. Int(); // Применяем прочитанные настройки assign. Settings(color, is. Light. On); } else { // Неизвестный ключ, пропускаем data. skip. Entity. Data(); } }
Лекция 11, слайд 11 Отладка в эмуляторе (Backup) Активировать Backup Manager adb shell bmgr enable true Послать соообщение о том, что состояние приложения изменилось adb shell bmgr backup com. fit. chirkunov. test. Bm Запустить Backup Manager adb shell bmgr run Деинсталлировать пакет приложения adb uninstall com. fit. chirkunov. test. Bm Новосибирский государственный университет, 2012
Лекция 11, слайд 12 Wi-Fi Direct API (Android 4. 0) Wifi. P 2 p. Manager class initialize discover. Peers request. Peers connect cancel. Connect Новосибирский государственный университет, 2012
Лекция 11, слайд 13 Wi-FI Direct (Android 4. 0) <uses-permission android: name="android. permission. ACCESS_WIFI_STATE" /> <uses-permission android: name="android. permission. CHANGE_NETWORK_STATE"/> <uses-permission android: name="android. permission. INTERNET" /> <uses-permission android: name="android. permission. ACCESS_NETWORK_STATE"/> Новосибирский государственный университет, 2012
Lecture11_ne_do_kontsa.pptx