Googleの一般的なJava、C ++、およびJavaScriptライブラリの解析、フォーマット、および国際的な電話番号の検証。 Javaバージョンは、スマートフォンでの実行に最適化されており、4.0(アイスクリームサンドイッチ)からAndroidフレームワークで使用されています。
README
sを探してください。getNumberType
数値自体に基づいて数値のタイプを取得します。固定線、モバイル、フリーダイヤル、プレミアムレート、共有コスト、VOIP、個人番号、UAN、ポケットベル、ボイスメール(実行可能な場合はいつでも)を区別できます。isNumberMatch
2つの数字が同じかどうかについて自信レベルを取得します。getExampleNumber
およびgetExampleNumberForType
すべての国/地域に有効な例番号を提供し、電話番号の例を指定するオプションが必要です。isPossibleNumber
長さの情報のみを使用して、完全な検証よりもはるかに速い長さ情報のみを使用して、数字が可能な電話番号であるかどうかをすばやく推測します。isValidNumber
長さとプレフィックス情報を使用した地域の電話番号の完全な検証。AsYouTypeFormatter
ユーザーが各数字を入力したときにオンザフライで電話番号をフォーマットします。findNumbers
テキストで数値を見つけます。PhoneNumberOfflineGeocoder
電話番号に関連する地理情報を提供します。PhoneNumberToCarrierMapper
電話番号に関連するキャリア情報を提供します。PhoneNumberToTimeZonesMapper
電話番号に関連するタイムゾーン情報を提供します。Javaデモは、GitHubリリース後にわずかな遅延で更新されます。
最後のデモの更新:v8.13.50。
注:ライブラリ(メインブランチ/マベンリリース)はv8.12.57にありますが、いくつかの展開の問題のため、新しいバイナリバージョンでJavaデモを更新することはできませんでした。すぐにこれを修正します。その間、JSデモを使用してください。
この数値が最新リリースのバージョン番号よりも低い場合、リリースの間にあり、デモはどちらのバージョンにもある場合があります。
このリポジトリには、E.164フォーマッタと呼ばれるデモAndroidアプリがあります。このアプリの目的は、現実の状況でライブラリを使用する方法の例を示すことです。この場合は、特にJavaを使用したAndroidアプリで説明します。
JavaScriptデモは、さまざまなタグで実行される場合があります。このリンクはあなたをmaster
にします。
アプリケーションにJavaコードを含めるには、Maven(Wikiを参照)と統合するか、Mavenリポジトリから最新のJARをダウンロードします。
Javadocは、https://javadoc.io/doc/com.googlecode.libphonenumber/libphoneNumber/の最新リリースを反映するために自動的に更新されます。
通常、これらのガイドラインに従ってリリース番号を選択します。
最後のリリース以降にマスターにプッシュされた変更のいずれかが既存のLibphphoneNumber APIの意図 /仕様と互換性がない場合、またはLibphphoneNumber(Java、C ++、またはJS)クライアントにコードを変更して構築を維持する必要がある場合は、主要なリリース。たとえば、最後のリリースが7.7.3の場合、新しいリリースは8.0.0になります。
これらの変更のいずれかが、クライアントがコードを更新して新しい機能を活用できる場合、およびクライアントがリリースが「悪い」とマークされた場合にこれらの変更をロールバックする必要がある場合は、マイナーリリースを公開します。たとえば、7.7.3から7.8.0になります。
それ以外の場合は、リリースにメタデータの変更のみが含まれる場合を含め、サブマイナーリリース(7.7.3から7.7.4)を公開します。
クライアントの互換性に影響を与えていないが、ライブラリのポーターの互換性に影響を与える可能性があるコードまたはメタデータに内部変更を加えることがあります。このような変更については、LibphphoneNumber Discussに発表します。このような変更はバージョン番号には反映されておらず、他の変更がなければサブマイナーリリースを公開します。
新しいリリースの通知を受け取りたいですか?休日や延長状況を除いて、ほとんどの年の間に、2週間ごとにリリースします。リリースタグを更新し、詳細なリリースノートを文書化します。また、リリースごとにLibphoneNumber-Discussに発表を送信します。
スイスの電話番号を表す文字列があるとしましょう。これは、それをPhoneNumber
オブジェクトに解析/正規化する方法です。
String swissNumberStr = "044 668 18 00" ;
PhoneNumberUtil phoneUtil = PhoneNumberUtil . getInstance ();
try {
PhoneNumber swissNumberProto = phoneUtil . parse ( swissNumberStr , "CH" );
} catch ( NumberParseException e ) {
System . err . println ( "NumberParseException was thrown: " + e . toString ());
}
この時点で、 swissNumberProto
には次のものが含まれています。
{
"country_code" : 41 ,
"national_number" : 446681800
}
PhoneNumber
は、元々 phonenumber.proto
から自動生成されたクラスであり、効率に必要な変更が必要です。各フィールドの意味の詳細については、 resources/phonenumber.proto
を参照してください。
次に、番号が有効かどうかを検証しましょう。
boolean isValid = phoneUtil . isValidNumber ( swissNumberProto ); // returns true
以下に示すように、フォーマット方法でサポートされているいくつかの形式があります。
// Produces "+41 44 668 18 00"
System . out . println ( phoneUtil . format ( swissNumberProto , PhoneNumberFormat . INTERNATIONAL ));
// Produces "044 668 18 00"
System . out . println ( phoneUtil . format ( swissNumberProto , PhoneNumberFormat . NATIONAL ));
// Produces "+41446681800"
System . out . println ( phoneUtil . format ( swissNumberProto , PhoneNumberFormat . E164 ));
また、他の国からダイヤルされた方法で番号をフォーマットすることもできます。
// Produces "011 41 44 668 1800", the number when it is dialed in the United States.
System . out . println ( phoneUtil . formatOutOfCountryCallingNumber ( swissNumberProto , "US" ));
PhoneNumberUtil phoneUtil = PhoneNumberUtil . getInstance ();
AsYouTypeFormatter formatter = phoneUtil . getAsYouTypeFormatter ( "US" );
System . out . println ( formatter . inputDigit ( '6' )); // Outputs "6"
... // Input more digits
System . out . println ( formatter . inputDigit ( '3' )); // Now outputs "650 253"
PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder . getInstance ();
// Outputs "Zurich"
System . out . println ( geocoder . getDescriptionForNumber ( swissNumberProto , Locale . ENGLISH ));
// Outputs "Zürich"
System . out . println ( geocoder . getDescriptionForNumber ( swissNumberProto , Locale . GERMAN ));
// Outputs "Zurigo"
System . out . println ( geocoder . getDescriptionForNumber ( swissNumberProto , Locale . ITALIAN ));
警告:電話番号の現在のキャリアに関するデータは提供していません。これは、対応する範囲を割り当てられた元のキャリアのみです。番号の移植性について読んでください。
PhoneNumber swissMobileNumber =
new PhoneNumber (). setCountryCode ( 41 ). setNationalNumber ( 798765432L );
PhoneNumberToCarrierMapper carrierMapper = PhoneNumberToCarrierMapper . getInstance ();
// Outputs "Swisscom"
System . out . println ( carrierMapper . getNameForNumber ( swissMobileNumber , Locale . ENGLISH ));
ライブラリの使用方法に関するその他の例は、ユニットテストで見つけることができます。
電話番号ライブラリのいくつかのサードパーティポートが私たちに知られています。開発者に役立つ場合に備えて、ここで共有します。
ただし、これらのポートは、LibphoneNumberプロジェクト以外の開発者によるものであることを強調しています。それらの品質を評価したり、メンテナンスプロセスに影響を与えたりしません。
独自のバージョンの代替品:
Class#getResourcesAsStream
のメタデータをロードし、Androidアプリがメタデータを再パッケージ化し、 AssetManager#open()
自体(FAQ)からロードするAndroidロードのベストプラクティスに従うことを尋ねます。これをやりたくない場合は、 AssetManager#open()
://github.com/michaelrocks/libphoneNumber-androidのポートをチェックしてください。クライアントからの特定の読み込み最適化。また、https://github.com/lionscribe/libphoneNumber-androidのポートをチェックアウトする必要があります。これはジオコーディングもサポートし、1行コードの変更のみを必要とします。LibphoneNumberメタデータに基づくツール: