- PVSM.RU - https://www.pvsm.ru -
Предисловие к FAQ.
Программирование является моим хобби уже давно (правда на других языках и платформах), но до андроида руки дотянулись совсем недавно. Прошло несколько этапов, прежде чем я добрался до написания программ.
Сначала была пара месяцев посвященных Java, на сайте с «Сгибателем».
После, долгие попытки подружится с Eclipse, закончившиеся побегом на Android Studio.
На данный момент выпущено 7 программ и две находятся в разработке.
Данная подборка возникла как попытка структурирования и оптимизации полученной в процессе информации.
Заранее извиняюсь за возможно некорректную терминологию – так как практикую обучение через создание, и в теоретической части есть пробелы.
Надеюсь, что приведенные примеры окажутся полезными.
finish();
Выход с большей вероятностью (api 15+)
Intent intent = new Intent(Activity.this, Activity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
finish();
Либо прописываем в AndroidManifest.xml — android:noHistory=«true»
Данные настройки позволяют избежать гуляния по предыдущим активностям вместо выхода.
Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
try {
MediaPlayer mp = MediaPlayer.create(context.getApplicationContext(), alert);
mp.setVolume(100, 100);
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
} catch (Exception e) {
Toast.makeText(context, "Error default media ", Toast.LENGTH_LONG).show();
}
Что бы звук не был тихим: stackoverflow.com/questions/8278939/android-mediaplayer-volume-is-very-low-already-adjusted-volume [4]
Для вибрации необходимо прописать в манифесте
<uses-permission android:name="android.permission.VIBRATE" />
Сам код:
vibrator = (Vibrator) getSystemService (VIBRATOR_SERVICE);
vibrator.vibrate(400);
builder.setMessage(Html.fromHtml("<font color='#FF0000'><b>John:</b></font>"+"How are you?"))
Выравнивание текста диалога:
stackoverflow.com/questions/3965122/android-how-to-align-message-in-alertdialog [9]
Форматирование текста:
stackoverflow.com/questions/3235131/set-textview-text-from-html-formatted-string-resource-in-xml [10]
Тень на тексте:
textv.setShadowLayer(1, 0, 0, Color.BLACK);
Intent intent = new Intent(MainActivity.this, Level002Activity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); // Если не хотим сохранять историю
startActivity(intent);
public class MyActivity extends Activity implements View.OnClickListener {
2. Объявляем переменную Button btn;
3. В onCreate прописываем
btn =(Button) findViewById(R.id.btn);
btn.setOnClickListener(this);
4. Создаем процедуру:
public void onClick(View v) {
// по id определеяем кнопку, вызвавшую этот обработчик
switch (v.getId()) {
case R.id.btn:
//Прописываем действие по нажатию
break;
}
}
Toast.makeText(this, "Текст сообщения", Toast.LENGTH_SHORT).show();
android:theme="@android:style/Theme.Translucent.NoTitleBar"
protected Dialog onCreateDialog(int id) {
if (id == DIALOG_EXIT) {
AlertDialog.Builder adb = new AlertDialog.Builder(this);
// заголовок
adb.setTitle(R.string.Help);
// сообщение
// adb.setMessage(R.string.HelperD);
adb.setMessage(this.getResources().getText(R.string.helpMain));
// иконка
adb.setIcon(R.drawable.ic_launcher);
// кнопка положительного ответа
adb.setPositiveButton( getResources().getString(R.string.close),myClickListener);
// кнопка отрицательного ответа
return adb.create();
}
return super.onCreateDialog(id);
}
DialogInterface.OnClickListener myClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which) {
// положительная кнопка
case Dialog.BUTTON_POSITIVE:
// saveData();
// Intent intent = new Intent(MyActivity.this, MyActivity.class);
// startActivity(intent);
// finish();
break;
}
}
};
Вызов: showDialog(DIALOG_EXIT);
String mess = getResources().getString(R.string.mess_1);
Код выглядит так:
try {
// Выполняется
}
catch (Exception e) {
// исключение
}
android.text.format.DateFormat.is24HourFormat(context)
muratonnet.blogspot.ru/2013/08/when-i-was-developing-date-time-picker.html [15]
getResources().getColor(R.color.errorColor)
String.format("%.2f%n1 paramFloat);
Пример Кода:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
Для api<16
void sendNotif(Context context) {
nm = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
String msgText = "Текст Сообщения";
Notification notif = new Notification(R.drawable.ic_launcher, "Статус строка сообщения",
System.currentTimeMillis());
Intent intent = new Intent(context, options.class);
intent.putExtra(MyActivity.FILE_NAME, "somefile");
PendingIntent pIntent = PendingIntent.getActivity(context, 0, intent, 0);
notif.setLatestEventInfo(context, "Статус строка сообщения", msgText, pIntent);
// ставим флаг, чтобы уведомление пропало после нажатия
notif.flags |= Notification.FLAG_AUTO_CANCEL;
// отправляем, цифра ID сообщения.
nm.notify(1, notif);
}
//Для api>15
void sendNotif16(Context context) {
String msgText = "Текст Сообщения";
NotificationManager notificationManager =getNotificationManager(context);
PendingIntent pi = getPendingIntent(context);
Notification.Builder builder = new Notification.Builder(context);
builder.setContentTitle("NotificationTitle")
.setContentText("Текст отображаемый в свернутом виде")
.setSmallIcon(R.drawable.ic_launcher)
.setAutoCancel(true)
.setPriority(Notification.PRIORITY_HIGH)
.addAction(R.drawable.ic_launcher,context.getResources().getString(R.string.NotificationButton), pi);
Notification notification = new Notification.BigTextStyle(builder)
.bigText(msgText).build();
notificationManager.notify(1, notification);
}
public NotificationManager getNotificationManager(Context context) {
return (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
}
//Вызов:
if (Build.VERSION.SDK_INT < 16) {
sendNotif(context);
} else {
sendNotif16(context);
}
//Отмена
public static void CancelNotification(Context ctx, int notifyId) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
nMgr.cancel(notifyId);
}
Пример кода:
В XML android:keepScreenOn=«true» или в программе:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Пример кода:
TableLayout table = (TableLayout) findViewById(R.id.score_table);
// create a new TableRow
TableRow row = new TableRow(this);
// create a new TextView
TextView t = new TextView(this);
t.setBackgroundResource(R.drawable.cell_shape);
t.setPadding(5,5,5,5);
View view_instance = (View)findViewById(R.id.txt1);
ViewGroup.LayoutParams params=view_instance.getLayoutParams();
t.setLayoutParams(params);
t.setText(data) ;
t.setTextColor(getResources().getColor(R.color.windowBackground));
row.addView(t);
table.addView(row,new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.FILL_PARENT));
Пример кода:
public void onBackPressed() {
Intent intent = new Intent(Activity1.this, Activity2.class);
startActivity(intent);
super.onBackPressed();
}
android:windowSoftInputMode="stateAlwaysHidden|adjustResize|adjustPan"
android:imeOptions="actionNext"
для завершения
android:imeOptions="actionDone"
Такое использовать не рекомендуется, но если надо.
Вот пример относительно стабильной реализации:
private static void disableRotation(Activity activity)
{
WindowManager windowManager = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE);
Configuration configuration = activity.getResources().getConfiguration();
int rotation = windowManager.getDefaultDisplay().getRotation();
// Search for the natural position of the device
if(configuration.orientation == Configuration.ORIENTATION_LANDSCAPE &&
(rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) ||
configuration.orientation == Configuration.ORIENTATION_PORTRAIT &&
(rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270))
{
// Natural position is Landscape
switch (rotation)
{
case Surface.ROTATION_0:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
case Surface.ROTATION_90:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
break;
case Surface.ROTATION_180:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
break;
case Surface.ROTATION_270:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
}
}
else
{
// Natural position is Portrait
switch (rotation)
{
case Surface.ROTATION_0:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
case Surface.ROTATION_90:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
case Surface.ROTATION_180:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
break;
case Surface.ROTATION_270:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
break;
}
}
}
private static void enableRotation(Activity activity)
{
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
Возобновление после перезагрузки:
stackoverflow.com/questions/12512717/android-alarmmanager-after-reboot [45]
github.com/commonsguy/cw-omnibus/blob/master/AlarmManager/Scheduled/src/com/commonsware/android/schedsvc/PollReceiver.java [46]
stackoverflow.com/questions/4315611/android-get-all-pendingintents-set-with-alarmmanager [47]
Пример кода с вызовом после перезагрузки (не оптимальный нужно дорабатывать):
В манифесте прописываем:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
<receiver android:name=".AlarmManagerBroadcastReceiver">
</receiver>
BootReceiver.java
public class BootReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
AlarmManagerBroadcastReceiver.setTime=3;
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "EyeGuard");
SetAlarm(context);
}
}
public void SetAlarm(Context context)
{
//Toast.makeText(context, "SetAlarm", 10).show();
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
intent.putExtra(AlarmManagerBroadcastReceiver.ONE_TIME, Boolean.FALSE);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
//After after 30 seconds
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * AlarmManagerBroadcastReceiver.setTime *60 , pi); /// 1000
}
public void CancelAlarm(Context context)
{
// Toast.makeText(context, "CancelAlarm", Toast.LENGTH_LONG).show();
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
}
AlarmManagerBroadcastReceiver.java
public class AlarmManagerBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AlarmManagerBroadcastReceiver.setTime=3;
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "EyeGuard");
wl.acquire(10000); //Засыпает через 10 секунд
//Здесь свой код
//
}
public void SetAlarm(Context context)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
intent.putExtra(ONE_TIME, Boolean.FALSE);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 *setTime *setTime2 , pi); /// 1000 *25 *60
}
public void CancelAlarm(Context context)
{
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
public void setOnetimeTimer(Context context){
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
intent.putExtra(ONE_TIME, Boolean.TRUE);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pi);
}
}
В активити из которой вызываем
Прописываем private AlarmManagerBroadcastReceiver alarm;
В onCreate:
alarm = new AlarmManagerBroadcastReceiver();
Добавляем процедуры:
public void startRepeatingTimer(View view) {
// Toast.makeText(this, "startRepeatingTimer", 30).show();
Context context = this.getApplicationContext();
if(alarm != null){
alarm.SetAlarm(context);
}else{
//Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
}
}
public void cancelRepeatingTimer(View view){
// Toast.makeText(this, "cancelRepeatingTimer", 30).show();
Context context = this.getApplicationContext();
if(alarm != null){
alarm.CancelAlarm(context);
}else{
// Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
}
}
Вызов осуществляем:
startRepeatingTimer(v);
Отменяем:
cancelRepeatingTimer(v);
В Манифест добавляем:
< uses-permission android:name="android.permission.WAKE_LOCK" />
Сам код:
PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG");
wakeLock.acquire();
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
Прописываем в активити import com.google.android.gms.ads.*;
В onCreate:
adView = new AdView(this);
adView.setAdUnitId("код баннера");
adView.setAdSize(AdSize.SMART_BANNER);
// Поиск разметки LinearLayout (предполагается, что ей был присвоен
// атрибут android:id="@+id/mainLayout").
RelativeLayout layout = (RelativeLayout)findViewById(R.id.RLMain);
// Добавление в разметку экземпляра adView.
layout.addView(adView);
// Инициирование общего запроса.
// AdRequest adRequest = new AdRequest.Builder().build();
AdRequest adRequest = new AdRequest.Builder().build();
//Для теста разкомментируем строчки и подставляем ID тестового девайса
/* AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR) // Эмулятор
.addTestDevice("B6F0A0DED6232ADEA16984CB963C6552") // Тестовый телефон Galaxy Nexus
.build();*/
// Загрузка adView с объявлением.
adView.loadAd(adRequest);
@Override
public void onPause() {
adView.pause();
super.onPause();
}
@Override
public void onResume() {
super.onResume();
adView.resume();
}
@Override
public void onDestroy() {
adView.destroy();
super.onDestroy();
}
Пример кода:
String appPackageName= getPackageName();
Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+appPackageName));
marketIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET|Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(marketIntent);
Автор: grafic
Источник [85]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android/67212
Ссылки в тексте:
[1] stackoverflow.com/questions/8515936/android-activity-life-cycle-what-are-all-these-methods-for: http://stackoverflow.com/questions/8515936/android-activity-life-cycle-what-are-all-these-methods-for
[2] developer.alexanderklimov.ru/android/theory/sharedpreferences.php: http://developer.alexanderklimov.ru/android/theory/sharedpreferences.php
[3] www.velocityreviews.com/forums/t128798-convert-string-to-float-not-so-trivial.html: http://www.velocityreviews.com/forums/t128798-convert-string-to-float-not-so-trivial.html
[4] stackoverflow.com/questions/8278939/android-mediaplayer-volume-is-very-low-already-adjusted-volume: http://stackoverflow.com/questions/8278939/android-mediaplayer-volume-is-very-low-already-adjusted-volume
[5] stackoverflow.com/questions/7671637/how-to-set-ringtone-with-ringtonemanager-action-ringtone-picker: http://stackoverflow.com/questions/7671637/how-to-set-ringtone-with-ringtonemanager-action-ringtone-picker
[6] learn-it-stuff.blogspot.ru/2011/12/how-to-use-androids-ringtonemanager-to.html: http://learn-it-stuff.blogspot.ru/2011/12/how-to-use-androids-ringtonemanager-to.html
[7] developer.android.com/reference/android/media/RingtoneManager.html: http://developer.android.com/reference/android/media/RingtoneManager.html
[8] stackoverflow.com/questions/9021846/is-there-a-way-to-customize-the-android-ringtone-picker-dialog: http://stackoverflow.com/questions/9021846/is-there-a-way-to-customize-the-android-ringtone-picker-dialog
[9] stackoverflow.com/questions/3965122/android-how-to-align-message-in-alertdialog: http://stackoverflow.com/questions/3965122/android-how-to-align-message-in-alertdialog
[10] stackoverflow.com/questions/3235131/set-textview-text-from-html-formatted-string-resource-in-xml: http://stackoverflow.com/questions/3235131/set-textview-text-from-html-formatted-string-resource-in-xml
[11] stackoverflow.com/questions/2176922/how-to-create-transparent-activity-in-android: http://stackoverflow.com/questions/2176922/how-to-create-transparent-activity-in-android
[12] startandroid.ru/ru/uroki/vse-uroki-spiskom/119-urok-60-dialogi-alertdialog-title-message-icon-buttons.html: http://startandroid.ru/ru/uroki/vse-uroki-spiskom/119-urok-60-dialogi-alertdialog-title-message-icon-buttons.html
[13] stackoverflow.com/questions/5984507/sharedpreferences-getintcumulative-0-catch-22-how-to-resolve: http://stackoverflow.com/questions/5984507/sharedpreferences-getintcumulative-0-catch-22-how-to-resolve
[14] habrahabr.ru/post/129582/: http://habrahabr.ru/post/129582/
[15] muratonnet.blogspot.ru/2013/08/when-i-was-developing-date-time-picker.html: http://muratonnet.blogspot.ru/2013/08/when-i-was-developing-date-time-picker.html
[16] stackoverflow.com/questions/8911356/whats-the-best-practice-to-round-a-float-to-2-decimals: http://stackoverflow.com/questions/8911356/whats-the-best-practice-to-round-a-float-to-2-decimals
[17] stackoverflow.com/questions/14545139/android-back-button-in-the-title-bar: http://stackoverflow.com/questions/14545139/android-back-button-in-the-title-bar
[18] www.londatiga.net/it/how-to-create-custom-window-title-in-android/: http://www.londatiga.net/it/how-to-create-custom-window-title-in-android/
[19] stackoverflow.com/questions/5681081/android-adding-button-to-custom-title-bar: http://stackoverflow.com/questions/5681081/android-adding-button-to-custom-title-bar
[20] stackoverflow.com/questions/7075349/android-clear-activity-stack: http://stackoverflow.com/questions/7075349/android-clear-activity-stack
[21] developer.alexanderklimov.ru/android/views/chronometer.php: http://developer.alexanderklimov.ru/android/views/chronometer.php
[22] stackoverflow.com/questions/5594877/android-chronometer-pause: http://stackoverflow.com/questions/5594877/android-chronometer-pause
[23] startandroid.ru/ru/uroki/vse-uroki-spiskom/164-urok-99-service-uvedomlenija-notifications.html: http://startandroid.ru/ru/uroki/vse-uroki-spiskom/164-urok-99-service-uvedomlenija-notifications.html
[24] developer.android.com/design/patterns/notifications.html: http://developer.android.com/design/patterns/notifications.html
[25] developer.android.com/guide/topics/ui/notifiers/notifications.html: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
[26] stackoverflow.com/questions/5331152/correct-method-for-setkeepscreenon-flag-keep-screen-on: http://stackoverflow.com/questions/5331152/correct-method-for-setkeepscreenon-flag-keep-screen-on
[27] www.genymotion.com/: http://www.genymotion.com/
[28] stackoverflow.com/questions/13189790/how-to-draw-horizontal-and-vertical-line-in-table-layout: http://stackoverflow.com/questions/13189790/how-to-draw-horizontal-and-vertical-line-in-table-layout
[29] stackoverflow.com/questions/3141996/android-how-to-override-the-back-button-so-it-doesnt-finish-my-activity: http://stackoverflow.com/questions/3141996/android-how-to-override-the-back-button-so-it-doesnt-finish-my-activity
[30] www.cyberforum.ru/android-dev/thread431958.html: http://www.cyberforum.ru/android-dev/thread431958.html
[31] developer.android.com/guide/topics/ui/controls/button.html: http://developer.android.com/guide/topics/ui/controls/button.html
[32] stackoverflow.com/questions/18507351/how-to-create-custom-button-in-android-using-xml-styles: http://stackoverflow.com/questions/18507351/how-to-create-custom-button-in-android-using-xml-styles
[33] stackoverflow.com/questions/3053062/how-can-i-write-character-in-android-strings-xml: http://stackoverflow.com/questions/3053062/how-can-i-write-character-in-android-strings-xml
[34] stackoverflow.com/questions/9771746/admob-ad-disappears-after-soft-keyboard-pops-up: http://stackoverflow.com/questions/9771746/admob-ad-disappears-after-soft-keyboard-pops-up
[35] stackoverflow.com/questions/7417123/android-how-to-adjust-layout-in-full-screen-mode-when-softkeyboard-is-visible: http://stackoverflow.com/questions/7417123/android-how-to-adjust-layout-in-full-screen-mode-when-softkeyboard-is-visible
[36] stackoverflow.com/questions/9003166/android-keyboard-next-button-issue-on-edittext: http://stackoverflow.com/questions/9003166/android-keyboard-next-button-issue-on-edittext
[37] stackoverflow.com/questions/17989733/move-to-another-edittext-when-soft-keyboard-next-is-clicked-on-android: http://stackoverflow.com/questions/17989733/move-to-another-edittext-when-soft-keyboard-next-is-clicked-on-android
[38] stackoverflow.com/questions/19573043/android-studio-how-to-migrate-project-to-gradle: http://stackoverflow.com/questions/19573043/android-studio-how-to-migrate-project-to-gradle
[39] stackoverflow.com/questions/3611457/android-temporarily-disable-orientation-changes-in-an-activity: http://stackoverflow.com/questions/3611457/android-temporarily-disable-orientation-changes-in-an-activity
[40] stackoverflow.com/questions/2795833/check-orientation-on-android-phone/10453034#10453034: http://stackoverflow.com/questions/2795833/check-orientation-on-android-phone/10453034#10453034
[41] www.mobilab.ru/androiddev/androidalarmmanagertutorial.html: http://www.mobilab.ru/androiddev/androidalarmmanagertutorial.html
[42] stackoverflow.com/questions/3052149/using-alarmmanager-to-start-a-service-at-specific-time: http://stackoverflow.com/questions/3052149/using-alarmmanager-to-start-a-service-at-specific-time
[43] developer.android.com/reference/android/app/AlarmManager.html: http://developer.android.com/reference/android/app/AlarmManager.html
[44] stackoverflow.com/questions/2844274/multiple-calls-to-alarmmanager-setrepeating-deliver-the-same-intent-pendinginten: http://stackoverflow.com/questions/2844274/multiple-calls-to-alarmmanager-setrepeating-deliver-the-same-intent-pendinginten
[45] stackoverflow.com/questions/12512717/android-alarmmanager-after-reboot: http://stackoverflow.com/questions/12512717/android-alarmmanager-after-reboot
[46] github.com/commonsguy/cw-omnibus/blob/master/AlarmManager/Scheduled/src/com/commonsware/android/schedsvc/PollReceiver.java: https://github.com/commonsguy/cw-omnibus/blob/master/AlarmManager/Scheduled/src/com/commonsware/android/schedsvc/PollReceiver.java
[47] stackoverflow.com/questions/4315611/android-get-all-pendingintents-set-with-alarmmanager: http://stackoverflow.com/questions/4315611/android-get-all-pendingintents-set-with-alarmmanager
[48] developer.android.com/reference/android/os/PowerManager.html: http://developer.android.com/reference/android/os/PowerManager.html
[49] stackoverflow.com/questions/18679455/in-android-how-can-i-turn-off-the-screen-programatically: http://stackoverflow.com/questions/18679455/in-android-how-can-i-turn-off-the-screen-programatically
[50] pastebin.com/RyjTF08K: http://pastebin.com/RyjTF08K
[51] stackoverflow.com/questions/13696891/programmatically-set-screen-to-off-in-android: http://stackoverflow.com/questions/13696891/programmatically-set-screen-to-off-in-android
[52] forum.xda-developers.com/showthread.php?t=1210421: http://forum.xda-developers.com/showthread.php?t=1210421
[53] developer.android.com/reference/android/os/PowerManager.html#goToSleep%28long: http://developer.android.com/reference/android/os/PowerManager.html#goToSleep%28long
[54] forum.hellroom.ru/index.php?PHPSESSID=6ef77d2e403cac8c366ce8f5a9e3f9fa&topic=16515.0: http://forum.hellroom.ru/index.php?PHPSESSID=6ef77d2e403cac8c366ce8f5a9e3f9fa&topic=16515.0
[55] habrahabr.ru/post/133858/: http://habrahabr.ru/post/133858/
[56] habrahabr.ru/post/203368/: http://habrahabr.ru/post/203368/
[57] habrahabr.ru/post/147243/: http://habrahabr.ru/post/147243/
[58] habrahabr.ru/post/188374/: http://habrahabr.ru/post/188374/
[59] bestreviewapp.com/indexs.php: http://bestreviewapp.com/indexs.php
[60] megadarja.blogspot.ru/2011/05/gallery.html: http://megadarja.blogspot.ru/2011/05/gallery.html
[61] stackoverflow.com/questions/13796382/android-viewpager-as-image-slide-gallery: http://stackoverflow.com/questions/13796382/android-viewpager-as-image-slide-gallery
[62] stackoverflow.com/questions/7818753/alternative-to-gallery-widget: http://stackoverflow.com/questions/7818753/alternative-to-gallery-widget
[63] startandroid.ru/ru/uroki/vse-uroki-spiskom/228-urok-125-viewpager.html: http://startandroid.ru/ru/uroki/vse-uroki-spiskom/228-urok-125-viewpager.html
[64] habrahabr.ru/post/131889/#comment_4379987: http://habrahabr.ru/post/131889/#comment_4379987
[65] stackoverflow.com/questions/10200256/out-of-memory-error-imageview-issue: http://stackoverflow.com/questions/10200256/out-of-memory-error-imageview-issue
[66] developer.android.com/training/displaying-bitmaps/index.html: http://developer.android.com/training/displaying-bitmaps/index.html
[67] stackoverflow.com/questions/14359024/out-of-memory-error-while-loading-bitmaps: http://stackoverflow.com/questions/14359024/out-of-memory-error-while-loading-bitmaps
[68] stackoverflow.com/questions/477572/strange-out-of-memory-issue-while-loading-an-image-to-a-bitmap-object: http://stackoverflow.com/questions/477572/strange-out-of-memory-issue-while-loading-an-image-to-a-bitmap-object
[69] hashcode.ru/questions/310542/java-android-%D0%BF%D0%B0%D0%B4%D0%B0%D0%B5%D1%82-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%B8-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B5-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9: http://hashcode.ru/questions/310542/java-android-%D0%BF%D0%B0%D0%B4%D0%B0%D0%B5%D1%82-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%B8-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B5-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9
[70] hashcode.ru/questions/305592/java-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-android: http://hashcode.ru/questions/305592/java-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-android
[71] developer.alexanderklimov.ru/android/photocamera.php: http://developer.alexanderklimov.ru/android/photocamera.php
[72] developer.android.com/training/camera/photobasics.html: http://developer.android.com/training/camera/photobasics.html
[73] stackoverflow.com/questions/2386025/android-camera-without-preview/5384913#5384913: http://stackoverflow.com/questions/2386025/android-camera-without-preview/5384913#5384913
[74] stackoverflow.com/questions/7398897/how-to-use-camera-to-take-picture-in-a-background-service-on-android: http://stackoverflow.com/questions/7398897/how-to-use-camera-to-take-picture-in-a-background-service-on-android
[75] stackoverflow.com/questions/9976817/take-picture-with-camera-intent-and-save-to-file: http://stackoverflow.com/questions/9976817/take-picture-with-camera-intent-and-save-to-file
[76] stackoverflow.com/questions/15214321/saving-pictures-taken-by-camera-in-android-app: http://stackoverflow.com/questions/15214321/saving-pictures-taken-by-camera-in-android-app
[77] developer.android.com/guide/topics/media/camera.html: http://developer.android.com/guide/topics/media/camera.html
[78] developer.alexanderklimov.ru/android/locale.php: http://developer.alexanderklimov.ru/android/locale.php
[79] stackoverflow.com/questions/2893350/how-to-launch-the-google-play-intent-in-give-feedback-mode-on-android: http://stackoverflow.com/questions/2893350/how-to-launch-the-google-play-intent-in-give-feedback-mode-on-android
[80] stackoverflow.com/questions/8031276/prompt-user-to-rate-an-android-app-inside-the-app: http://stackoverflow.com/questions/8031276/prompt-user-to-rate-an-android-app-inside-the-app
[81] developer.alexanderklimov.ru/android/publish.php: http://developer.alexanderklimov.ru/android/publish.php
[82] dolbodub.blogspot.ru/2014/04/android-studio-apk.html: http://dolbodub.blogspot.ru/2014/04/android-studio-apk.html
[83] developer.android.com/tools/help/proguard.html: http://developer.android.com/tools/help/proguard.html
[84] forum.hellroom.ru/index.php?topic=14805: http://forum.hellroom.ru/index.php?topic=14805
[85] Источник: http://habrahabr.ru/post/232885/
Нажмите здесь для печати.