|
Qwen ИИ Кодинг
AI-powered Code Generation - Android Studio Java GPS трекер
AI Prompt Example
Разработаем запрос для ИИ chat.qwen.ai для генерирования Java кода GPS трекера - приложения, отправляющего координаты смартфона через SMS на указанный номер.
Текст запроса:
Сгенерируй максимально простой Java код приложения GeoPosition для Android 11 для SDK 33.
Приложение должно определять координаты по GPS сразу после запуска.
Нужно запросить и получить все необходимые для работы приложения разрешения, в том числе и разрешение на чтение и запись данных в хранилище
Дополнительно запросить у пользователя разрешение на использование внешнего хранилища.
Необходимо разместить на экране элементы TextView:
- первый TextView для показа времени вычисления координат по GPS
- второй TextView для показа координат
- третий TextView для показа количества спутников, используемых для вычислений GPS координат
Необходимо каждые 5 минут писать на экран в TextView и отправлять координаты и время с помощью SMS на номер телефона +7-910-xxx-xx-xx и записывать их в формате Json в текстовый файл Position.txt в папку Download смартфона.
При запуске приложения необходимо:
- проверить, есть ли файл Position.txt в папке Download смартфона. Если файл Position.txt при запуске приложения есть, его надо стереть и создать заново (пустым)
- отправить SMS "Start GeoPosition"
Code Generation >>
Ответ ИИ Qwen:
1. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- Разрешения -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-perment android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<application>
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="GeoPosition"
android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
tools:targetApi="33">
<activity>
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
    </manifest>
2. MainActivity.java
package com.example.geoposition;
import android.Manifest;
import android.content.ContentValues;
import android.content.pm.PackageManager;
import android.location.GpsStatus;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.telephony.SmsManager;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import org.json.JSONObject;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private static final int PERMISSIONS_REQUEST_CODE = 100;
private static final String PHONE_NUMBER = "+79100000000"; // замените на реальный номер
private TextView tvTime, tvCoords, tvSatellites;
private LocationManager locationManager;
private int satellitesUsed = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvTime = findViewById(R.id.tvTime);
tvCoords = findViewById(R.id.tvCoords);
tvSatellites = findViewById(R.id.tvSatellites);
// Запрос разрешений
requestPermissionsIfNeeded();
}
private void requestPermissionsIfNeeded() {
String[] permissions;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
permissions = new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.SEND_SMS
};
} else {
permissions = new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.SEND_SMS,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
}
boolean needRequest = false;
for (String perm : permissions) {
if (ContextCompat.checkSelfPermission(this, perm) != PackageManager.PERMISSION_GRANTED) {
needRequest = true;
break;
}
}
if (needRequest) {
ActivityCompat.requestPermissions(this, permissions, PERMISSIONS_REQUEST_CODE);
} else {
startAppLogic();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSIONS_REQUEST_CODE) {
boolean allGranted = true;
for (int result : grantResults) {
if (result != PackageManager.PERMISSION_GRANTED) {
allGranted = false;
break;
}
}
if (allGranted) {
startAppLogic();
} else {
Toast.makeText(this, "Требуются все разрешения!", Toast.LENGTH_LONG).show();
finish();
}
}
И так далее. Полный листинг всех файлов сгенерированного проекта приведен ниже. Можно copy/paste в новый проект в Android Studio
Полный ЛИСТИНГ >> или AI Code >>
Программирование с ИИ (AI-powered Code Generation) позволило разработать работающий проект примерно в 40 раз быстрее, чем ту версию, которую я писал вручную.
Точно так же был создан проект видеорегистратора для смартфона и генератора псевдослучайных чисел большой размерности.
Code Generation >> Java с ИИ >>
|
|