- ListView в Android: Кастомизация списков
- Пример: ListActivity с собственным шаблоном.
- Пример: ListActivity с гибким шаблоном
- Продвинутые ListActivity
- Мультивыбор
- Хедер и Футер
- SimpleCursorAdapter
- How to find out your Android phone’s model number
- How to find out your Android phone’s model number
- Samsung
- OnePlus
- Other ways of finding the number
- Serial numbers and IMEI numbers
- Русские Блоги
- Уникальная идентификация Android-устройства
- Предисловие
- Разница между IMEI, MEID, ESN, IMSI, android_id
- Получите анализ уникальной идентификации Android
- 1. DEVICE_ID, разные мобильные устройства возвращают IMEI, MEID или ESN код
- 2. MAC-адрес
- 3.ANDROID_ID
- 4. серийный номер
- 5. ID установки
- Фактическое использование идентификаторов
- 1. Отслеживайте использование оборудования пользователем на уровне
- 2. Отслеживание оборудования на аппаратном уровне.
- подводить итоги
ListView в Android: Кастомизация списков
Продолжение статьи о ListView в Android, в котором мы рассмотрим более сложные примеры его использования, такие, как иконки на элементах списка и добавление чекбоксов к этим элементам. Так же мы рассмотрим возможности по оптимизации кода.
Напомню, что статья является переводом этой статьи с разрешения ее автора.
Пример: ListActivity с собственным шаблоном.
Вы можете создать свой собственный шаблон для элементов списка и применить его к своему Адаптеру. Шаблон будет одинаковым для каждого элемента списка, но дальше мы разберем как сделать его более гибким. В нашем примере мы добавим иконку к каждому элементу списка.
Создайте файл шаблона «rowlayout.xml» в папке res/layout вашего проекта «de.vogella.android.listactivity».
Измените свою Деятельность на следующую. Код почти такой же, как и в предыдущем примере, единственная разница в том, что мы используем наш собственный шаблон в ArrayAdapter и указываем адаптеру какой элемент пользовательского интерфейса будет содержать текст. Мы не делали этого в предидущей статье, поскольку мы использовали стандартный шаблон.
Пример: ListActivity с гибким шаблоном
Оба предыдущих примера используют один шаблон сразу для всех строк. Если вы хотите изменить вид определенных строк, вам нужно определить свой адаптер и заместить метод getView().
Этот метод ответственен за создание отдельных элементов вашего ListView. getView() возвращает Вид. Этот Вид фактически является Шаблоном (ViewGroup) и содержит в себе другие Виды, например, ImageView или TextView. С getView() вы так же можете изменить параметры индивидуальных видов.
Чтобы прочитать шаблон из XML в getView(), вы можете использовать системный сервис LayoutInflator.
В этом примере мы расширяем ArrayAdapter, но так же мы можем реализовать непосредственно BaseAdapter.
Определение простого адаптера
Очень просто создать свой Адаптер, не обращая внимания на его оптимизацию. Просто получайте в своей Деятельности данные, которые хотите отобразить и сохраняйте их в элемент списка. В вашем getView() установите ваш предопределенный шаблон для элементов и получите нужные вам элементы с помощью findViewById(). После этого вы можете определить их свойства.
Наш пример использует две картинки: «no.png» и «ok.png». Я положил их в папку «res/drawable-mdpi». Используйте свои картинки. Если не нашли таковых, то просто скопируйте «icon.png» и, с помощью графического редактора, немного измените их.
Создайте класс «MySimpleArrayAdapter», который будет служить нашим Адаптером.
Чтобы использовать этот Адаптер, измените класс MyList на следующее
Когда вы запустите это приложение, вы увидите список с элементами, с разными значками на некоторых из них.
Оптимизация производительности вашего собственного адаптера
Создание Java объектов для каждого элемента — это увеличение потребления памяти и временные затраты. Как уже говорилось, Андроид стирает элементы (виды) вашего списка, которые уже не отображаются и делегируют управление ими в метод getView() через параметр convertView.
Ваш Адаптер может использовать этот вид и избежать «раздутие» Шаблона для этого элемента. Это сохраняет память и уменьшает загрузку процессора.
В вашей реализации вы должны проверять convertView на наличие содержимого и переназначать его, отправляя новые данные в существующий Шаблон, если convertView не пустой.
Наша реализация так же использует модель ViewHolder. Метод findViewById() достаточно ресурсоемок, так что нужно избегать его, если в нем нет прямой необходимости.
ViewHolder сохраняет ссылки на необходимые в элементе списка Шаблоны. Этот ViewHolder прикреплен к элементу методом setTag(). Каждый Вид может содержать примененную ссылку. Если элемент очищен, мы можем получить ViewHolder через метод getTag(). Это выглядит нагруженным, но, на самом деле, работает быстрее, чем повторяющиеся вызовы findViewById().
Обе техники (переназначение существующих видов и модель ViewHolder) увеличивают производительность примерно на 15%, особенно на больших объемах данных.
Продолжая использовать проект «de.vogella.android.listactivity», создайте класс «MyArrayAdapter.java».
Продвинутые ListActivity
Обработка долгого нажатия на элементе
Вы так же можете добавить LongItemClickListener к виду. Для этого получите ListView через метод getListView() и определите обработку длительного нажатия через метод setOnItemLongClickListener().
Элементы, взаимодействующие с моделью данных
Ваш шаблон элемента списка так же может содержать Виды, взаимодействующие с моделью данных. Например, вы можете использовать Checkbox в элементе списка и, если чекбокс включен, вы можете менять данные, отображаемые в элементе.
Мы до сих пор используем тот же проект. Создайте шаблон элемента списка «rowbuttonlayout.xml».
создайте для этого примера класс Model, который содержит название элемента и его содержимое, если он чекнут.
Создайте следующий Адаптер. Этот Адаптер добавит обработку изменения Checkbox. Если чекбокс включен, то данные в модели тоже меняются. Искомый Checkbox получает свою модель через метод setTag().
В завершение измените свой ListView на следующий.
Когда вы запустите ваше приложение, вам будет доступна отметка элементов, которая будет отражаться на вашей модели.
Мультивыбор
Так же можно сделать одиночный и мультивыбор. Посмотрите следующие сниппеты для примера. Чтобы получить выбранные элементы используйте listView.getCheckedItemPosition() или listView.getCheckedItemPositions(). Вы так же можете использовать listView.getCheckedItemIds(), чтобы получить ID выбранных элементов.
Хедер и Футер
Вы можете поместить произвольные элементы вокруг своего списка. Например, вы можете создать шаблон со списком между двумя TextView. Если вы так сделаете, то вы должны указать id «@android:id/list» к ListView, т.к. ListActivity ищет Вид с таким идентификатором. В таком случае один TextView всегда будет видимым над ListView (Хедер), а другой будет виден внизу. Если вы хотите использовать Футер и Хедер только в конце/начале списка, чтобы они не были фиксированными, то нужно использовать view.setHeaderView() или view.setFooterView(), например:
SimpleCursorAdapter
Если вы работаете с базой данных или же с контентом непосредственно, вы можете использовать SimpleCursorAdapter, чтобы перенести данные в ваш ListView.
Создайте новый проект «de.vogella.android.listactivity.cursor» с деятельностью «MyListActivity». Создайте такую деятельность.
Убедитесь, что вы дали приложению доступ к контактам. (Используйте «android.permission.READ_CONTACTS» в AndroidManifest.xml).
Спасибо за внимание. Комментарии и поправки к переводу приветствуются, т.к. даже в исходнике встречаются ошибки и опечатки.
Прошу прощения за репост, изначально не отметил как перевод, поскольку недавно здесь. Большое спасибо за наводку jeston, принял к сведению и научился на ошибках.
Источник
How to find out your Android phone’s model number
Chances are you already know the make and model of the phone you own. Unless your smartphone was a hand-me-down from a friend or family member, you most likely bought it on the basis of it being a particular model with particular features. However, you may not be entirely sure of the specific model number of your phone. This number can vary even among the same type of phone, so that a Samsung Galaxy S21, for example, can have one of several different numbers.
Finding the exact model number can be necessary if you need to have your phone repaired or if you’re selling your phone online and want to provide precise info to potential buyers. Either way, finding your Android phone’s model number is pretty easy, and we explain how to do it in this article for a variety of Android phone manufacturers. We also explain the difference between your Android phone’s model number and its serial number, as well as the difference between these and the IMEI number.
Also, if you have an iPhone, you can find out its model number by checking out our guide.
How to find out your Android phone’s model number
While the basic workflow is more or less the same in each case, we’re going to explain how to find your Android phone’s model number for three of the biggest manufacturers, since they vary in subtle ways.
In case your make of phone isn’t listed below, you should still able to follow the same basic steps, even if the terms used may be different from one manufacturer to another (e.g. “About device” rather than “About phone”). Some phones will show the model number in the phone’s About page, while others will require you to tap on regulatory labels (or regulatory information).
If you have a Google Pixel and Android 10 or later, you can find your phone’s model number by taking the following steps:
Step 1: Go to Settings.
Step 2: Scroll down and tap About Phone.
Step 3: You’ll see the name of your model (e.g. Pixel 4a) under the Model subheading. However, to find the actual model number, tap Regulatory Labels.
After you’ve tapped Regulatory Labels, you’ll see the model number at the top of the screen. In the example above, this number is G025N.
Also, if you have Android 8.0 Oreo or Android 9.0 Pie on your phone, you’ll need to go to Settings > System > About Phone.
Samsung
For any Samsung smartphone, you can find out your model number by doing the following:
Step 1: Go to Settings.
Step 2: Scroll down and tap About Phone.
Step 3: You’ll see the model number next to the Model Number subheading.
In fact, some Samsung smartphones have their model numbers printed in small print on their backs. So instead of going through the relative hassle of opening Settings and so on, you can simply flip over your phone.
OnePlus
If you’re a OnePlus owner, here’s what you need to do:
Step 1: Go to Settings.
Step 2: Scroll down and tap About Phone or About Device.
Step 3: You’ll see the model number under the Model or Model Number subheading.
As with Samsung, you may find your model number printed on the back of your phone in some cases.
Other ways of finding the number
As explained above, you can sometimes find your Android phone’s model number by simply looking at the back of your phone. Likewise, if you’re the type of person who keeps the boxes of their phones, you should be able to find your phone’s model number on its box.
In a small number of other cases, you can also remove the battery from your phone and check the labeling underneath, which should include the model number and serial number. This should really be done only if you can’t find the model number any other way, although we’ve never heard of a phone that didn’t display its model number in Settings somewhere.
Needless to say, you should also know what you’re doing before trying to remove your phone’s casing and battery, so research it thoroughly beforehand (or take it to a reputable repair shop). Also, most Android phones now don’t come with removable batteries, so this route may be a nonstarter in many cases.
Serial numbers and IMEI numbers
Just to clarify, your phone’s model number isn’t the same as its serial number. The model number identifies the type of phone your device is, such as whether it’s a Samsung Galaxy Note 20 or Note 20 Ultra. By contrast, a serial number is a unique number that identifies the individual unit, meaning each OnePlus 8T ever produced, for instance, has a different serial number. You may need to know your serial number when dealing with customer support, such as when you need a repair or replacement.
You can usually find your phone’s serial number in much the same way you find its model number. In the case of Pixels, for example, you go to Settings > About Phone > Model. After you’ve tapped Model, you’ll see the serial number under the Serial Number subheading. With Samsung phones, you’ll see the serial number along with the model number on the About Phone screen. The same goes for many other manufacturers, including OnePlus, Motorola, and others.
Similarly, the international mobile equipment identity (IMEI) number is different from both the serial and model numbers. It’s another uniquely identifying number (i.e. each individual device has a different IMEI), and in its case, it’s used by networks (and even law enforcement) to identify individual phones. It can be used to track down lost or stolen phones, for example, or to block certain phones from networks. Also, it’s different from your SIM number, which is used only within a single phone network and not across networks.
Regardless of your phone, finding its IMEI can be done by opening the Phone app and pressing *#06#. You won’t need to press the Call/Dial button, since the device information will pop up on the screen as soon as you enter this number. Aside from showing you your IMEI number, it should also display the phone’s serial number.
Источник
Русские Блоги
Уникальная идентификация Android-устройства
Предисловие
Недавно я хотел узнать о получении уникальной идентификации устройства, и тут у меня заболела голова. тогда. . . . . .
Подведем итоги сегодня.
Разница между IMEI, MEID, ESN, IMSI, android_id
Давайте сначала определим несколько концепций, которые способствуют следующему развитию:
1.IMEI
- (IMEI: международный идентификационный номер мобильного оборудования) — это знак, который определяет мобильное оборудование. Он хранится в мобильном оборудовании и может использоваться для отслеживания украденного или недействительного мобильного оборудования. Состав IMEI показан на рисунке ниже. Наберите «* # 06 #», чтобы найти его.
- Общая длина составляет 15 цифр, и для каждой цифры используются только 0–9 цифр. Среди них TAC представляет собой код сборки модели, присвоенный Европейским центром стандартизации моделей; FAC представляет номер производителя сборки; SNR — серийный номер продукта, используемый для различения каждого мобильного устройства в одном TAC и FAC; SP — резервный код.
IMEI состоит из 15 цифр, а его состав:
1. Первые 6 цифр (TAC) — это «номер утверждения модели», который обычно представляет модель.
2. Следующие две цифры (FAC) — это «окончательный номер сборки», который обычно обозначает место производства.
3. Следующие 6 цифр (SNR) — это «серийный номер», который обычно представляет собой производственный порядковый номер.
4. Последняя цифра (SP) обычно «0», это контрольный код, который в настоящее время зарезервирован.
Роль строкового кода:
IMEI: TAC + FAC + SNR + SP. IMEI (International Mobile Equipment Identity) — это аббревиатура от International Mobile Equipment Identity. International Mobile Equipment Identity — это «электронный серийный номер», состоящий из 15 цифр. Он соответствует каждому мобильному телефону один за другим, а код является всемирным. только. После сборки каждому мобильному телефону будет присвоен глобально уникальный набор номеров, который будет записан производителем от производства до доставки.
Когда мобильный телефон украден, если вы знаете код IEMI, вы можете заблокировать мобильный телефон через оператора мобильной связи, то есть узнать номер мобильного телефона после кражи, отключить функцию вызова мобильного телефона и узнать номер мобильного телефона. должность. В обычных условиях поставщики не принимают запросы от частных лиц или организаций на обнаружение или блокировку мобильных телефонов. В Китае соответствующие департаменты национальной безопасности будут в определенной степени управлять серийными номерами мобильных телефонов.
- Идентификатор мобильного оборудования (MEID) — единственный 56-битный идентификационный номер мобильного терминала в мире. Идентификационный номер будет записан в терминал и не может быть изменен. Может использоваться для идентификации и отслеживания мобильных устройств. Поскольку сегмент номера ESN является ограниченным ресурсом, он в основном исчерпан, и может быть небольшое количество повторно используемых сегментов номера, поэтому 56-битный сегмент номера MEID был разработан для замены 32-битного сегмента номера ESN. MEID в основном используется для мобильных телефонов CDMA.
- Из-за увеличения числа мобильных устройств CDMA исходного 8-битного ESN недостаточно, поэтому получился MEID 56 бит = (56/4 = 14 байтов). Современные мобильные телефоны CDMA обычно имеют как ESN / MEID. MEID также выражается в шестнадцатеричном формате.
MEID идентифицируется 14 шестнадцатеричными цифрами, а 15-я цифра является контрольной цифрой, которая не участвует в эфирной передаче.
RR: диапазон A0-FF, выделенный официальным лицом
XXXXXX: диапазон 000000-FFFFFF, выделенный официальным
ZZZZZZ: диапазон 000000-FFFFFF, серийный номер, присвоенный каждому терминалу производителем.
C / CD: 0-F, проверьте код
Номера IMEI и MEID в мобильных телефонах похожи на идентификационные карты в нашей жизни. Они являются важной основой для идентификации мобильных телефонов. Например, мобильные телефоны с ложными номерами, операторы сети могут в любой момент отключить этот мобильный телефон в сети с помощью технических средств. Это принесет огромные риски пользователям мобильных телефонов. На номера IMEI или MEID, используемые в мобильных телефонах, можно по закону подать заявку через соответствующие агентства, такие как Moore Laboratories.
Кроме того, приложение MEID требует оплаты. Текущая цена составляет 8000 долларов США за каждый MEID в диапазоне 1M и дополнительные 8000 долларов США за каждый дополнительный номер MEID в диапазоне 1M.
Номера MEID назначаются и управляются Ассоциацией телекоммуникационной индустрии (TIA).
Проверка номера MEID, в настоящее время не существует универсального метода, который устанавливается каждым производителем мобильных телефонов. Вы можете проверить номер MEID, проверив инструкцию к телефону.
- Электронный серийный номер в системе CDMA является уникальным идентификатором для идентификации физического аппаратного устройства. Другими словами, каждый мобильный телефон использует этот уникальный идентификатор для идентификации, как и личная идентификационная карта. ESN в CDMA соответствует IMEI в сети GSM. ESN имеет 32 бита,
- То есть 32/4 = 8 байтов. С увеличением количества мобильных устройств CDMA ESN становится недостаточно, поэтому вводится MEID с большим количеством цифр. ESN выражается в шестнадцатеричном формате.
- Международный идентификационный номер мобильного абонента (IMSI: International Mobile Subscriber Identification Number) — это знак, который различает мобильных пользователей. Он хранится на SIM-карте и может использоваться для отличия эффективной информации от мобильных пользователей.
- Общая длина IMSI не превышает 15 цифр, также используются числа от 0 до 9. Среди них MCC — это код страны мобильного пользователя, который занимает 3 цифры. MCC Китая определяет его как 460; MNC — это номер мобильной сети, состоящий из двух цифр, используемый для идентификации сети мобильной связи, к которой принадлежит мобильный пользователь;
- MSIN — это идентификационный код мобильного пользователя, используемый для идентификации мобильных пользователей в сети мобильной связи.
- Уникальный идентификационный код устройства Android
Согласно приведенному выше резюме, соответствующая информация о вашем мобильном телефоне выглядит следующим образом:
meid[99000939335539]
imei1[863254036690765]
imei2[863254036690773]
simSerialNumber [89860117801033225378]
subscriberId [460011691516816]
Это телефоны Huawei:
MEID:A000007F2C4002
IMEI1:866957038217380
IMEI2:866957038364067
PESN:802B5D2A
SN:8BN02179015937
Поскольку мой мобильный телефон поддерживает две SIM-карты, у меня есть два номера imei.
Получите анализ уникальной идентификации Android
1. DEVICE_ID, разные мобильные устройства возвращают IMEI, MEID или ESN код
Это серийный номер, предоставляемый системой Android разработчикам для идентификации мобильных телефонов, и он также является наиболее универсальным среди различных методов.Можно сказать, что почти все устройства могут возвращать этот серийный номер с хорошей уникальностью.
Немобильное устройство: если только устройство с Wi-Fi или музыкальный проигрыватель не имеет аппаратной функции для звонков, такого DEVICE_ID нет.
Разрешение: для получения DEVICE_ID требуется разрешение READ_PHONE_STATE, но если мы его только получаем и не используем другие функции вызова, то это разрешение слишком велико для использования
1.1 Sim Serial Number — уникальный идентификатор SIM-карты мобильного телефона.
код показан ниже:
Примечание. Для устройств CDMA возвращается нулевое значение.
1.2 Некоторые другие значения, которые может получить TelephonyManager
Дополнительные сведения о TelephonyManager см. В этом блоге.Telephonymanager подробно
2. MAC-адрес
MAC-адрес глобально уникален и не может быть сброшен пользователем, а также не изменится после восстановления заводских настроек. Как правило, не рекомендуется использовать MAC-адреса для какой-либо формы идентификации пользователя. Поэтому начиная с Android M,Больше не доступно через сторонние APIMAC-адрес локального устройства (например, WLAN и Bluetooth). [WifiInfo.getMacAddress()] Методы и [BluetoothAdapter.getDefaultAdapter().getAddress()] Метод вернет 02:00:00:00:00:00 。
Есть способы получить MAC-адрес 8.0wifi в Интернете:
Вышеупомянутый метод доступен как для мобильных телефонов Xiaomi Android 8.0, так и для мобильных телефонов Huawei Honor 8.0. Остальные телефоны не тестировал.
заметка:
Чтобы получить MAC-адрес, он должен быть подключен к сети Wi-Fi, иначе соответствующее имя не будет получено.
3.ANDROID_ID
Когда устройство запускается в первый раз, система случайным образом сгенерирует 64-битное число и сохранит его в виде шестнадцатеричной строки. Эта шестнадцатеричная строка — ANDROID_ID. При очистке устройства значение будет Сброс.
можно получить следующим способом:
ANDROID_ID можно использовать как идентификацию устройства, но вам нужно обратить внимание на:
1. Ошибка индивидуальной системы производителя: разные устройства могут генерировать один и тот же ANDROID_ID: 9774d56d682e549c.
2. Ошибка индивидуальной системы производителя: некоторые устройства возвращают null.
3. Различия между устройствами. Для устройств CDMA ANDROID_ID и TelephonyManager.getDeviceId () возвращают одно и то же значение.
4. серийный номер
Серийный номер можно получить с помощью следующего метода для системы Android версии 2.3 и выше, и немобильные устройства также могут получить его через этот интерфейс.
4.1 Некоторые значения, которые можно получить в android.os.Build
Непосредственно по коду:
Ниже приводится соответствующая информация, полученная Huawei Honor 9 и Xiaomi:
Serial_Num: 8BN0217919015937
Manufacturer: HUAWEI
Model: STF-AL00
Brand: HONOR
Device: HWSTF
Ниже представлена соответствующая информация о Mi 6.
Sim_SN: 89860117801033225378
Manufacturer: Xiaomi
Model: MI 6
Brand: Xiaomi
Device: sagit
5. ID установки
Принцип этого метода заключается в генерации идентификатора при первом запуске программы после установки. Этот метод отличается от уникальной идентификации устройства. Различные приложения будут генерировать разные идентификаторы, и одна и та же программа будет отличаться при переустановке. Таким образом, это не уникальный идентификатор устройства, но можно гарантировать, что идентификатор каждого пользователя отличается. Можно сказать, что он используется для идентификации уникального идентификатора каждого приложения (т.е. идентификатора установки), который можно использовать для отслеживания количества установок приложений и т. Д.
Непосредственно загрузите код:
Приведенный выше код также можно реализовать с помощью SharedPreferences:
Фактическое использование идентификаторов
Прежде всего, мы должны сначала выяснить конкретные потребности нашего оборудования для отслеживания. В настоящее время существует не более двух видов спроса:
- 1. Отслеживайте оборудование на уровне цикла использования пользовательского оборудования.
означает рассматривать устройство как новое устройство каждый раз, когда пользователь стирает данные с устройства и восстанавливает заводские настройки. - 2. Отслеживание оборудования на аппаратном уровне.
означает, что устройство следует рассматривать как то же устройство после удаления данных или восстановления заводских настроек.
1. Отслеживайте использование оборудования пользователем на уровне
Теоретически значения Android_ID нам достаточно для выполнения этого требования, но именно из-за недостатков в Android_ID мы не можем напрямую идентифицировать устройство. Здесь мы используем несколько значений, чтобы избежать этих недостатков.
Я рекомендую использовать Android_ID и серийный номер Sim для идентификаторов, связанных с жизненным циклом пользовательского оборудования. Кроме того, можно добавить Device_ID, а идентификатор устройства можно вычислить и сгенерировать с помощью UUID или MD5.
- Реализация UUID:
- Реализация MD5 (алгоритм MD5 см. Ниже):
2. Отслеживание оборудования на аппаратном уровне.
Для отслеживания устройств на аппаратном уровне рекомендуется использовать идентификаторы оборудования, такие как идентификатор устройства (DeviceId), Mac-адрес, серийный номер устройства (SN) или марка устройства, название модели и т. Д. Эти значения вводятся после того, как пользователь удалит данные или восстановит заводские настройки. Это не изменится. Точно так же, чтобы повысить стабильность и устранить дефекты одного идентификатора, мы используем несколько идентификаторов для объединения, а затем вычисляем нужный нам идентификатор устройства с помощью алгоритма UUID или MD5.
- Реализация UUID:
- Реализация MD5 (алгоритм MD5 см. Ниже):
Чтобы дополнить требуемый выше md5:
Важная вещь в реальном бою выше — это мысль.
подводить итоги
Резюме выше, я почти сумасшедший. Эта работа относительно тривиальна, без чувства системы. Свяжите один кусок и соедините вместе. Боже мой! ! !
Источник