1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/skfpaul-VirtualLocation

Клонировать/Скачать
README.md 8.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 07.06.2025 00:50 a2679a2

Виртуальное расположение (UI-аналог共享单车OFO)

Главная страница блога

Виртуальное расположение для Android-программ позволяет изменять местоположение в приложениях, таких как WeChat, QQ, Momo и некоторых приложениях для отметки присутствия. Вы можете легко переключаться между различными местоположениями на вашем устройстве! (Если вам понравилось, оставьте звездочку, если вам помогло, оставьте форк. Добро пожаловать к Star и Fork ^_^)

Скачать Без лишних слов, попробуйте приложение.

Предварительный просмотр эффекта

Главная страница

Виртуальное расположение WeChat

Alt text

1. Откройте это приложение, выберите место, куда вы хотите перенестись, и подтвердите перенос. Альтернативный текст Альтернативный текст
  1. Затем откройте WeChat, чтобы продемонстрировать отправку местоположения в социальной сети, как показано ниже: Альтернативный текст### Виртуальное расположение для отметки присутствия в DingTalk

Принцип работы

Основные методы реализации виртуального расположения

  1. Через функцию ADB для симуляции местоположения
  2. Через Hook для изменения значений API получения географических координат (требуется установка Xposed и ROOT)

Схема проектирования кода представлена ниже: Alt text Первый способ заключается в использовании функции ADB для симуляции местоположения, а затем запуске потока, который постоянно обновляет значения широты и долготы в LocationManager, что позволяет имитировать местоположение.

mMockThread = new Thread(new Runnable() {
    @Override
    public void run() {
        while (true) {
            try {
                Thread.sleep(500);
                if (!hasAddTestProvider) {
                    Log.d("xqf", "Для Android 6.0+ требуется отдельная настройка программы для ADB симуляции местоположения");
                    continue;
                }
                setLocation(LocationUtil.mLatitude, LocationUtil.mLongitude);
                Log.d("xqf", "setLocation240=latitude:" + mLatitude + "longitude:" + mLongitude);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
});
mMockThread.start();
```<p>Второй способ заключается в использовании метода Hook для изменения системных API. Многие программы используют метод isFromMockProvider для проверки, включено ли симуляция местоположения через ADB. Поэтому я использовал метод Hook, чтобы обойти эту проверку и обеспечить возможность имитации местоположения. Подробнее о том, как это работает, можно прочитать в моей статье: <a href="http://littlerich.top/2017/01/17/%E5%9F%BA%E4%BA%8EXposed%E6%A1%86%E6%9E%B6Hook%E5%AE%9A%E4%BD%8D%E5%8A%9F%E8%83%BD%E6%9D%A5%E7%A0%B4%E8%A7%A3QQ%E7%9A%84LBS%E7%BA%A2%E5%8C%85/">Имитация местоположения с помощью Xposed для взлома LBS-пакета в QQ</a></p>----------

<h2>Тестирование</h2>
<p>На тестовых устройствах Android: Meizu 2, Huawei, SCL-TL00, Vivo xs1, Redmi Note, всё работает корректно.</p>

<h2>Версии</h2>
<h3>v1.0</h3>
<p>Реализована имитация местоположения с помощью ADB. Однако новые версии программ добавили проверку на ADB-симуляцию, поэтому многие новые программы не работают.</p>
<h3>v1.1</h3>
<p>Улучшена имитация местоположения с помощью Hook для изменения системных API, что повысило совместимость и функциональность программы. Однако для использования этого метода требуется root-доступ к устройству Android.</p>
<h2>Проблема</h2>
<p>Если возникают проблемы при запуске программы, сначала проверьте ответы в разделе Issues, чтобы избежать повторного ответа на одни и те же вопросы (примечание: раздел Issues находится в верхнем меню на этой странице).</p>
<p>Email: <a href="mailto:bugbye@163.com">bugbye@163.com</a></p>
<h2><a id="user-content-license" class="anchor" href="#license" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Лицензия</h2>
<pre><code>Copyright 2016 xuqingfu</code></pre>
Лицензировано по лицензии Apache, версия 2.0 («Лицензия»);
вы не можете использовать этот файл, кроме как в соответствии с Лицензией.
Вы можете получить копию Лицензии по адресу    http://www.apache.org/licenses/LICENSE-2.0

Если применимое законодательство или письменное соглашение об этом не требуют, программное обеспечение,
распространяемое по Лицензии, предоставляется на условиях «КАК ЕСТЬ»,
БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ КАКИХ-ЛИБО ТИПОВ, как явных, так и подразумеваемых.
См. Лицензию для конкретного языка, регулирующего права и условия использования по Лицензии.

</article>
  </div>

</div>

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/skfpaul-VirtualLocation.git
git@api.gitlife.ru:oschina-mirror/skfpaul-VirtualLocation.git
oschina-mirror
skfpaul-VirtualLocation
skfpaul-VirtualLocation
master