[JAVA] Android 11 prendra en charge Reiwa en standard

La version Android augmentera. Android 11 est sur le point de sortir. Il semble que le numéro original japonais "Reiwa" soit enfin pris en charge par l'API standard sur Android 11.

Conclusion

Je vais d'abord énoncer la conclusion.

--Sur Android 11 (R), il semble que le numéro original japonais "Reiwa" soit enfin pris en charge par l'API standard. --Depuis le niveau d'API 24, l'API standard Android a déjà intégré ICU. ――Mais les niveaux d'API entre 24 et 29 ne prennent pas en charge "Rewa". Ce n'est que "Heisei".

[Quiet] Nom de code ou niveau d'API

À propos, le nom de code du nom du bonbon a disparu de "Q".

KitKat, sucette, guimauve, nougat, oreo, tarte. Parfois, avec un mélange de marques déposées. Les enfants Android étaient enthousiasmés par ce que seraient les bonbons qui commençaient par "Q", mais Google a déclaré: "J'ai arrêté de nommer les bonbons."

Android 10 est "Q". Le 11 qui sortira bientôt est "R".

Prend en charge "Reiwa" avec "R" sur Android ... Pas question! Est-ce que "R" est le R de "Reiwa"? !! Quoi?

Et à part ce numéro de version 10 ou 11, et le nom de code, le numéro important pour le développeur est "[niveau API](https://developer.android.com/guide/topics/manifest/uses-sdk-" élément? hl = ja) ". Android 8.0 est Oreo et a un niveau d'API de 26. Cependant, en ce qui concerne Android 8.1, c'est aussi Oreo, mais le niveau d'API est de 27. C'est compliqué!

Et quel est le numéro de niveau API attribué à "R" ...? Je l'ai écrit vers la fin de cet article, alors restez à l'écoute. (Sumimasen)

Bibliothèque ICU d'IBM

http://site.icu-project.org/home

C'est une abréviation pour «International Components for Unicode». Quoi qu'il en soit, diverses API utiles sont enregistrées. Logiciels open source.

Cours de calendrier japonais de l'ICU

La classe com.ibm.icu.util.JapaneseCalendar correspond au yuan japonais. Du premier numéro original "Daiga" à nos jours. Je n'ai pas vérifié le maniaque de la façon de gérer les dynasties du Nord et du Sud.

L'étrangeté de Honnoji


import java.util.Locale;

import com.ibm.icu.text.DateFormat;
import com.ibm.icu.text.DateFormatSymbols;
import com.ibm.icu.text.SimpleDateFormat;
import com.ibm.icu.util.GregorianCalendar;
import com.ibm.icu.util.JapaneseCalendar;

public class Honnoujinohen {
    public static void main(String[] args) {
        JapaneseCalendar jpCalendar = new JapaneseCalendar();
        DateFormatSymbols dfs = new DateFormatSymbols(jpCalendar, Locale.JAPANESE);
        DateFormat dateFormat = new SimpleDateFormat("Gyy année MM mois jj jour", dfs);
        dateFormat.setCalendar(jpCalendar);

        //"Honnouji no Hen" 2 juin 1582
        int year = 1582;
        int month = 6;
        int day = 2;
        String s = dateFormat.format(new GregorianCalendar(year, month - 1, day).getTime());
        System.out.println(s);
    }
}

landmark_honnouji_fire.png

Résultat d'exécution


02, 10 juin Tensho

C'est insupportable pour les fans de théâtre d'Okawa et les femmes expérimentées. Kirin arrive. Était-ce le numéro original qui écrivait "Le paradis a raison"? Oh, la turbulence d'Ojin. Réforme de Tenpo. La prison d'Ansei. Vous pouvez parcourir les temps dans votre cerveau simplement en pensant au problème d'origine.

Cette ICU est compatible avec "Reiwa" à partir de la version 64.2 publiée le 17 avril 2019.

API standard Android

Dans l'API standard Android, ICU a été importé à partir du niveau d'API 24 (Android 7.0 Nougat). Le package a changé simplement parce qu'il a été importé. Par exemple, la classe JapaneseCalendar ci-dessus est ʻandroid.icu.util.JapaneseCalendar`.

Et. enfin. Au niveau API d'Android 11 (R),

python


public static final int REIWA

Sera ajouté! Modèle d'énumération de jour de pluie! !! !! Non! !! !! Je ne sais pas, car l'IBM ICU est un modèle d'énumération int en premier lieu! !! !!

Exemple d'application

J'ai créé une application comme celle-ci.

Screenshot_1585201324.png

"Kenbu no Shinsei" est une nouvelle politique que l'empereur Daigo a lancée le 17 juillet 1333 après avoir vaincu le shogunat de Kamakura, mais ce jour-là, le problème original est toujours "Motohiro", n'est-ce pas? Je pense que je vais passer le prochain examen de mi-session du 2e semestre.

nigaoe_godaigo_tennou.png

Screenshot_1585200766.png

De Heisei à Reiwa.

Screenshot_1585200774.png

L'environnement de développement est le suivant.

Android Studio 3.6.1 Build #AI-192.7142.36.36.6241897, built on February 27, 2020 Runtime version: 1.8.0_212-release-1586-b04 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o Windows 10 10.0 GC: ParNew, ConcurrentMarkSweep Memory: 1237M Cores: 8 Registry: ide.new.welcome.screen.force=true Non-Bundled Plugins:

Paramètres Gradle

Doit être créé au niveau de l'API d'Android 11 (R). Effectuez les opérations suivantes dans le fichier de paramètres Gradle (partiellement omis).

build.gradle


android {
    compileSdkVersion 'android-R'
    buildToolsVersion "29.0.2"

    defaultConfig {
        applicationId "com.example.gengou"
        minSdkVersion 24
    }

    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
}

Au moment d'écrire ces lignes, aucun numéro n'a été attribué au niveau d'API Android 11 (R). Il semble que ce soit toujours une version préliminaire. On estime qu'il sera probablement «30» lorsque la version officielle sera publiée.

«minSdkVersion» doit être au moins «24». Parce que, comme mentionné ci-dessus, ICU a été intégré dans l'API standard Android à partir du niveau d'API 24.

Activity

MainActivity.java


package com.example.gengou;

import android.icu.text.DateFormat;
import android.icu.text.DateFormatSymbols;
import android.icu.text.SimpleDateFormat;
import android.icu.util.GregorianCalendar;
import android.icu.util.JapaneseCalendar;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import java.util.Locale;

public class MainActivity extends AppCompatActivity {

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

        EditText year = findViewById(R.id.year);
        EditText month = findViewById(R.id.month);
        EditText day = findViewById(R.id.day);
        TextView gengo = findViewById(R.id.gengou);

        findViewById(R.id.button).setOnClickListener(v -> {
            int y = Integer.parseInt(year.getText().toString());
            int m = Integer.parseInt(month.getText().toString());
            int d = Integer.parseInt(day.getText().toString());
            JapaneseCalendar jpCalendar = new JapaneseCalendar();
            DateFormatSymbols dfs = new DateFormatSymbols(jpCalendar, Locale.JAPANESE);
            DateFormat dateFormat = new SimpleDateFormat("Gyy année MM mois jj jour", dfs);
            dateFormat.setCalendar(jpCalendar);
            String s = dateFormat.format(new GregorianCalendar(y, m - 1, d).getTime());
            gengo.setText(s);
        });
    }
}

Prend en charge la réconciliation avec l'ICU d'IBM au lieu de l'API standard Android

Même si l'API standard Android prend en charge Reiwa! Au lieu de l'utiliser, l'ICU d'IBM répond au décret, quelque chose est bouleversant! Vous pensez peut-être cela, mais j'aimerais faire une telle chose pour les raisons suivantes.

Alors c'est comme ça que ça se fait.

Paramètres Gradle

build.gradle


dependencies {
    implementation 'com.ibm.icu:icu4j:64.2'
}

Ajoutez-le en tant que bibliothèque dépendante et c'est SyncNow. Spécifiez «64.2» ou supérieur qui prend en charge la réconciliation.

programme

L'instruction ʻimport` ressemble à ceci pour éviter les conflits de nom.

Faites attention au colis


import com.ibm.icu.text.DateFormat;
import com.ibm.icu.text.DateFormatSymbols;
import com.ibm.icu.text.SimpleDateFormat;
import com.ibm.icu.util.GregorianCalendar;
import com.ibm.icu.util.JapaneseCalendar;

import java.util.Locale;

Seul Locale est un package java.util` stable. Avec cela, même Android 6, 5 et 4 peut prendre en charge la réconciliation.

[Bonus] De toute évidence.

Soyez assuré que l'ICU n'a pas le numéro original de "Kobun".

Screenshot_1585202068.png

c'est tout.

Recommended Posts

Android 11 prendra en charge Reiwa en standard
Comment "évider" une vue sur Android
Exemple d'affichage des notifications (tête haute) sur Android
Comment détecter les conflits de microphone sur Android
Que faire si TextToSpeech ne fonctionne pas sur Android 11
À partir d'avril 2018 Comment installer Java 8 sur Mac
[Android Studio] Je souhaite utiliser une bibliothèque Maven sur Android
Je souhaite simplifier la sortie du journal sur Android