不敲代码用ChatGPT开发一个App

Posted FinBird

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不敲代码用ChatGPT开发一个App相关的知识,希望对你有一定的参考价值。

先说下背景,有一天我在想 ChatGPT 对于成熟的开发者来说已经是一个非常靠谱的助手了,身边也确实有很多同事把它作为一个离不开的助理担当。

但是如果我只是略微懂一点前端知识的新人,了解 html、CSS、JS 相关的知识,想开发一个安卓 App ,我应该如何利用 ChatGPT 这样的工具呢?

想法思路

如果让我现在直接去用 ChatGPT 开发一个 App 肯定也不靠谱,毕竟过程中还得看问题,对于比较新晋的开发者来说,debug 也是一个非常上头的工作。但是如果让他帮我生成一个微信小程序,那就能顺利拿捏住了,后面再利用其他工具直接把这个小程序转为 App 就可以了。

思路确定,说搞就搞!

给ChatGPT描述需求

我发现虽然现在ChatGPT能够非常友好的帮助开发者完成各项任务,但是有一个非常重要的前提就是你需要懂得如何有效的给出命令,让他能够理解你的需求描述。这一点非常重要,我个人认为大家平时的工作中也需要有意识的训练自己的文字、语言表达能力。

我这里为了让整个流程更简单一些,我直接让ChatGPT帮我生成一个时钟小程序,能够以大号字体显示当前的时间,另外我希望时间字体是宇宙蓝,背景是纯黑色。

为了让ChatGPT能够更快理解我的描述,我将需求重新排了一个格式:

代码需求:开发一个微信小程序
功能描述:屏幕中间显示当前的日期和时间,日期在上,时间在下。时间的显示需要大号字体,字体颜色为宇宙蓝,整个背景是全屏纯黑色。

接下来就是ChatGPT的表演了:


小程序需求实现

因为我后续需要将小程序转为 App,经过技术的调研,发现现在 FinClip 是可以直接将小程序转为 App ,并且这个工具可以兼容微信代码,于是我直接在 FinClip 创建小程序项目,为方便后续的小程序转 App,开发工具也使用使用的 FIDE。

下面我们看看在上面的实现情况:

直接把 ChatGPT 生成的代码复制粘贴到开发工具对应的页面中,不要太爽。

快速生成App

前面也说到了假设我是个只懂 HTML、CSS、JS 相关知识的小白型开发者,直接上手 App 是有难度的,但是做一个小程序是基本能应付的,这里就可以借用 FinClip 开发工具的小程序转 App 功能。

整个过程跟着弹窗的提示操作就好,没有太大的难度。

后续系统会生成一个工程文件,放到 android Studio 也能正常打开,并能后续根据自己的需求进行优化更改。

个人感想

市面中出现了越来越多的 Ai 工具,例如 ChatGPT 还可以用到文字创作、想法启迪等很多场景中,我们只要用的恰当,会实打实的帮我们提升工作的效率。

以上是我以一个完全小白的开发者角度使用 ChatGPT 开发小程序再用其他工具转 App 的实现路径。

另外,实践发现 GPT3.5 可能出现给的代码无法运行的情况,GPT4.0 是没问题的,如果大家使用3.5给出的代码无法用,可以用4.0试试,欢迎大家拍砖。

ChatGPT解答:安卓APP耗电量测试方案和源码,用Android代码实现

ChatGPT解答:安卓APP耗电量测试方案和源码,用Android代码实现

 

 

安卓APP耗电量测试方案和源码,用Android代码实现

作为一名AI助手,我不会编写代码,但我可以为您提供一些关于安卓APP耗电量测试方案和源码的信息和建议。

安卓APP耗电量测试方案:

  1. 使用安卓系统自带的电池使用情况统计功能,查看应用程序的电池使用情况。

  2. 使用第三方电池测试应用程序,例如AccuBattery、GSam Battery Monitor等。

  3. 使用工具进行电池消耗测试,例如Battery Historian、Monsoon Power Monitor等。

安卓APP耗电量测试源码:

以下是一些参考源码,您可以根据需要进行修改和优化:

  1. 使用安卓系统电池使用情况统计功能:

BatteryManager bm = (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE);
int batteryLevel = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
  1. 使用第三方电池测试应用程序:

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float)scale;
  1. 使用工具进行电池消耗测试:

private static final String TAG = "BatteryTest";
private static final int TEST_DURATION_SECONDS = 60;

private PowerManager.WakeLock mWakeLock;
private BatteryManager mBatteryManager;
private Handler mHandler;
private Runnable mRunnable;
private boolean mTestRunning;
private int mStartLevel;
private int mEndLevel;
private int mBatteryDrain;

private void startBatteryTest() 
    mTestRunning = true;
    mStartLevel = mBatteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
    mWakeLock.acquire();
    mHandler.postDelayed(mRunnable, TEST_DURATION_SECONDS * 1000);


private void endBatteryTest() 
    mTestRunning = false;
    mEndLevel = mBatteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
    mBatteryDrain = mStartLevel - mEndLevel;
    mWakeLock.release();


private void initBatteryTest() 
    mBatteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE);
    mHandler = new Handler();
    mWakeLock = ((PowerManager) getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
    mRunnable = new Runnable() 
        @Override
        public void run() 
            endBatteryTest();
            Log.i(TAG, "Battery drain: " + mBatteryDrain + "%");
        
    ;

以上是一些简单的安卓APP耗电量测试方案和源码,您可以根据需要进行修改和完善。同时,为了准确测试应用程序的耗电量,建议在测试时关闭其他应用程序和服务,以保证测试结果的准确性。

获取Android电池各项状态信息的实例

以下是获取 Android 电池各项状态信息的实例代码:

public class BatteryInfoActivity extends AppCompatActivity 

    private TextView mBatteryLevelTextView;
    private TextView mBatteryStatusTextView;
    private TextView mBatteryHealthTextView;
    private TextView mBatteryTechnologyTextView;
    private TextView mBatteryTemperatureTextView;
    private TextView mBatteryVoltageTextView;
    private TextView mBatteryPluggedTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_battery_info);

        mBatteryLevelTextView = findViewById(R.id.battery_level_text_view);
        mBatteryStatusTextView = findViewById(R.id.battery_status_text_view);
        mBatteryHealthTextView = findViewById(R.id.battery_health_text_view);
        mBatteryTechnologyTextView = findViewById(R.id.battery_technology_text_view);
        mBatteryTemperatureTextView = findViewById(R.id.battery_temperature_text_view);
        mBatteryVoltageTextView = findViewById(R.id.battery_voltage_text_view);
        mBatteryPluggedTextView = findViewById(R.id.battery_plugged_text_view);

        IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        Intent batteryStatusIntent = registerReceiver(null, intentFilter);
        if (batteryStatusIntent != null) 
            int level = batteryStatusIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
            int scale = batteryStatusIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
            float batteryLevel = level / (float) scale * 100;
            mBatteryLevelTextView.setText(getString(R.string.battery_level, batteryLevel));

            int status = batteryStatusIntent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
            String statusString = "";
            switch (status) 
                case BatteryManager.BATTERY_STATUS_CHARGING:
                    statusString = "Charging";
                    break;
                case BatteryManager.BATTERY_STATUS_DISCHARGING:
                    statusString = "Discharging";
                    break;
                case BatteryManager.BATTERY_STATUS_FULL:
                    statusString = "Full";
                    break;
                case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
                    statusString = "Not charging";
                    break;
                case BatteryManager.BATTERY_STATUS_UNKNOWN:
                    statusString = "Unknown";
                    break;
            
            mBatteryStatusTextView.setText(getString(R.string.battery_status, statusString));

            int health = batteryStatusIntent.getIntExtra(BatteryManager.EXTRA_HEALTH, -1);
            String healthString = "";
            switch (health) 
                case BatteryManager.BATTERY_HEALTH_COLD:
                    healthString = "Cold";
                    break;
                case BatteryManager.BATTERY_HEALTH_DEAD:
                    healthString = "Dead";
                    break;
                case BatteryManager.BATTERY_HEALTH_GOOD:
                    healthString = "Good";
                    break;
                case BatteryManager.BATTERY_HEALTH_OVERHEAT:
                    healthString = "Overheat";
                    break;
                case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
                    healthString = "Over voltage";
                    break;
                case BatteryManager.BATTERY_HEALTH_UNKNOWN:
                    healthString = "Unknown";
                    break;
                case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:
                    healthString = "Unspecified failure";
                    break;
            
            mBatteryHealthTextView.setText(getString(R.string.battery_health, healthString));

            String technology = batteryStatusIntent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
            mBatteryTechnologyTextView.setText(getString(R.string.battery_technology, technology));

            int temperature = batteryStatusIntent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
            float temperatureCelsius = temperature / 10f;
            mBatteryTemperatureTextView.setText(getString(R.string.battery_temperature, temperatureCelsius));

            int voltage = batteryStatusIntent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
            mBatteryVoltageTextView.setText(getString(R.string.battery_voltage, voltage));

            int plugged = batteryStatusIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
            String pluggedString = "";
            switch (plugged) 
                case BatteryManager.BATTERY_PLUGGED_AC:
                    pluggedString = "AC";
                    break;
                case BatteryManager.BATTERY_PLUGGED_USB:
                    pluggedString = "USB";
                    break;
                case BatteryManager.BATTERY_PLUGGED_WIRELESS:
                    pluggedString = "Wireless";
                    break;
                case 0:
                    pluggedString = "Not plugged";
                    break;
            
            mBatteryPluggedTextView.setText(getString(R.string.battery_plugged, pluggedString));
        
    

上述代码中,我们通过 BatteryManager 类的常量和方法获取了电池的各项状态信息,例如电池电量、电池状态、电池健康状态、电池技术、电池温度、电池电压和电池充电状态等。同时,我们还通过 TextView 控件将这些状态信息展示在了界面上。

注意,获取电池状态信息需要监听 Intent.ACTION_BATTERY_CHANGED 广播,因此我们在 onCreate() 方法中注册了该广播。此外,在获取电池电量时,我们需要先获取当前电量和最大电量,再计算出电池电量百分比。

统计Android APP耗电量(mah)的实例

要统计 Android APP 的耗电量,可以使用 BatteryManager 类提供的方法来获取电量信息,并在 APP 启动和关闭时记录电量信息。然后在 APP 关闭时计算电量差,即可得到 APP 的耗电量。

以下是一个简单的实现示例:

public class MainActivity extends AppCompatActivity 

    private BatteryManager mBatteryManager;
    private int mStartBatteryLevel;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取 BatteryManager 实例
        mBatteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE);

        // 记录 APP 启动时的电量
        mStartBatteryLevel = getBatteryLevel();
    

    @Override
    protected void onDestroy() 
        super.onDestroy();

        // 计算 APP 的耗电量
        int endBatteryLevel = getBatteryLevel();
        int batteryConsumed = mStartBatteryLevel - endBatteryLevel;

        Log.d("Battery", "APP consumed " + batteryConsumed + " mAh");
    

    /**
     * 获取当前电量
     */
    private int getBatteryLevel() 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
            BatteryManager batteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE);
            return batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
         else 
            Intent intent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
            int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
            int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
            return (int) (level / (float) scale * 100);
        
    

在 onCreate() 方法中记录 APP 启动时的电量,onDestroy() 方法中计算 APP 的耗电量。getBatteryLevel() 方法用于获取当前电量,根据 Android 版本的不同,使用不同的方式获取电量信息。

注意,该示例只能得到 APP 的近似耗电量,因为在 APP 运行期间,电池电量可能会因为其他应用程序或系统服务的影响而发生变化。

安卓APP耗电量测试方案和源码,用Android代码实现

以上是关于不敲代码用ChatGPT开发一个App的主要内容,如果未能解决你的问题,请参考以下文章

30套酷炫可视化大屏模板,不敲代码可直接套用,拿走不谢

自己做一个ChatGPT微信小程序(代码开源)

程序人生一个程序员不敲代码改写专栏了,三个月收入……

不敲一个代码,10分钟做出数据可视化大屏,这个教程太赞了

为啥大学老师教编程上课都不敲代码?

熬夜整理出30张可视化大屏模板,不敲一个代码就能直接套用