卒業証書を書いた/アプリケーションを作成した/ Google Playでレイアウトした

おそらく最初からやり直します。 遠い2015年8月、私は6年生で、大学院の仕事について考え始めました。 4年目にモバイルアプリケーションの開発コースを完了した後、Android向けの何かを書きたいと思いました。 自宅では、半年という早い時期にホームシアター(プロジェクター、スクリーン、デスクトップPCに接続されたオーディオパネル)が設置されました。 そして、これらすべてをAIORemoteを通じて管理しました。



しかし、このスキームで私が本当に気に入らなかった点がいくつかありました:私が使用するビデオプレーヤーのコントロール(MPC-HC)は存在していましたが、ビデオを開始または削除するにはリモートタッチパッドに切り替える必要がありました。



一般的に、長い間、より快適な生活を送るために、目標、インセンティブ、機会がありました。



それはすべて、ホームシアターのリモートコントロール用のアプリケーションを作成するというアイデアから始まりました。 Google Playで検索したところ、類似物(リモートコントロールMPC-HC、およびリモートコンピューター制御用の汎用アプリケーション)があることが明らかになりました。 キャッチは、私が必要とする厳密に定義された関数がなかったことです。 自転車を発明する必要があります。



最初のステップ



はじめに、アプリケーションのメイン画面(コントロール付きの画面)の見方をスケッチしました。



制御画面

左側-最初のドラフト、右側-当日に何が起こったか



これと並行して、彼はビデオプレーヤーAPIへのアクセスを容易にするライブラリの検索を開始しました。 スペイン語またはイタリア語(ソースコードのコメントから判断)によって作成されたMPC_API_LIBが見つかりました。



モバイルアプリケーションのみがプレーヤーと対話でき、その場合でもWEBインターフェイスを介して(これを最後の手段として残します)、サーバー部分が必要です。 しかし、サーバーに何を書くべきでしょうか? Windowsでの実行が計画されているため、.NETが適しています。 またはJava? この時点で、同じレベルの.NETとJavaの知識があり、.NETで書くことにしました。



第二段階



コンピューターのオーディオ出力制御。 コンピューターにオーディオパネルが接続されていますが、コンピューターにはスピーカーもあります。 そして、映画を見始めたときに最も厄介なことの1つは、サウンドの切り替えです。 サウンド設定でシステムウィンドウ呼び出しをシミュレートするユーティリティがあることがわかりました。 しかし、システムライブラリを使用する興味深いユーティリティDefSoundも見つけました。 必要なもの。 アプリケーション内のオーディオデバイスの切り替えをそれに結び付けています。



第三段階



12月15日までに、音声を切り替え、再生やその他のマルチメディア機能を制御する最初のバージョンを作成しています。 これと並行して、私はドキュメントを書いて(卒業証書を持っているので)、開発者アカウントをGoogleに登録しています。 この時点で、ヒンドゥー教の作業コードが作成されました。



私はそのようなアンドロイドスマートフォンを持っていないので、開発は少し複雑でした。 しかし、Blackberry Z30があります。 そして、Androidランタイム4.3を実行します。 したがって、実際の条件でのテストが行​​われました。



第4ステップ



アプリケーションの収益化を考えています。 私の考えでは、最も不正確なオプションを選択します:有料版と無料版です。 サーバーは、設定ファイルを介した設定を持つコンソールアプリケーションです。すべてを手動で指定する必要があります。 最初から、アプリケーションを英語に翻訳することが決定されました(配偶者翻訳機を少し活用しました)。



ActionBarをすべてのデバイスで同じように機能させる方法について、多くの時間を費やしました。 最後に、AppCompatライブラリに基づいてスタイルをコンパイルしました。



<resources> <style name="MyTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/MyActionBarStyle</item> <item name="actionBarStyle">@style/MyActionBarStyle</item> <item name="actionMenuTextColor">@color/textColor</item> </style> <style name="MyActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar"> <item name="android:logo">@mipmap/ic_launcher</item> <item name="logo">@mipmap/ic_launcher</item> <item name="android:displayOptions">showHome|useLogo</item> <item name="displayOptions">showHome|useLogo</item> </style> </resources>
      
      





アプリケーションに広告を埋め込むには、いくつかの譲歩が必要です。 たとえば、アプリケーションの重みが3倍になったという事実(現時点では2.4MBから6.5MBになった)と、一連のアクセス許可に耐えました。



広告なし:



 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
      
      





広告付き:



 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
      
      





また、開発中にToastでの作業を再考する必要があったため、トーストが現れる前に大量のトーストが蓄積されませんでした。



 public class SingleToast { private static Toast mToast; public static void show(Context context, String text) { show(context, text, Toast.LENGTH_SHORT); } public static void show(final Context context, final String text, final int duration) { Handler shower = new Handler(Looper.getMainLooper()); shower.post(new Runnable() { @Override public void run() { if (mToast != null) { mToast.cancel(); } mToast = Toast.makeText(context, text, duration); mToast.show(); } }); } public static void hide() { if (mToast != null) { mToast.cancel(); } } public static Toast getToast() { return mToast; } }
      
      





サーバーからの応答はJSON形式ですが、クライアントの解析メカニズムはまだファクタリングされておらず、org.jsonのクラスが使用されます。 com.fasterxml.jacksonライブラリは接続されており、JSONを使用した有能な作業が計画されていますが。



第5ステップ



卒業の1か月前の16日の初夏に、申請は多かれ少なかれ提示可能な形式で与えられます。 アイコンで突然質問が発生しました。 インターネット上では、同様のトピックのアイコンはいっぱいですが、著作権とあらゆる種類のライセンスは驚くべきものです。 私はアーティストではありませんが、Photoshopを使用することもあります。 したがって、この段階で自転車を発明します。



ロゴ



モバイルアプリケーションには、PC上で実行されているサーバーが必要です。 そして、なんとかして配布する必要があります。 まあ、あなたはサイトが必要です。



第六ステップ



サーバー側を保存および配布するための静的サイトを作成します。 裸のHTML + CSS。 Google Playでアプリケーションを公開します。 そして、ここに最初の出版物がありました(ちなみに、まだ解決されていません)。 最初にベータ版を公開し、友人にテストを依頼しました。 それから彼はリリースに移った。 そして友人は、レビューを残してアプリケーションを評価できないと言います。



画像



技術サポートの対応は実を結ばなかったので、もう一度公開するという唯一の選択肢がありました。 幸いなことに、2番目の出版物が正常に定着し、機能しました。 私は、Googleプレイページから卒業プレゼンテーションにスクリーンショットを挿入することができました(後でわかりましたが、多くの保護がありました)。 一方、私は卒業証書を取るつもりです...



私たちの日々



卒業証書を完了した後、プロジェクトを開発したいという欲求は減少しませんでした(彼はインセンティブの消滅後に退屈するかもしれないと期待していましたが)。 このサイトは管理しやすいようにPHPに翻訳されています。 私はこのサイトの開発の半分を妻の肩にかけて、このプロジェクトの仕事を家族向けにしました。 新しい機能がアプリケーションに徐々に追加され、使用時に発明されました。 開発の年にapache.httpを使用しました(現在も使用しています)が、なんとかレガシーになりました。 Android NリリースAndroid Studio 2リリース



現時点では、サーバー部分がやり直されています-WPFで書き直され、英語にローカライズされました(最初は設定ファイルに英語の説明しかありませんでした)。



統計



現在、2kを超えるダウンロード:



統計



アクティブなものはほとんどなく、プロジェクトは失敗と見なすことができます。 しかし、何らかの理由で私はそうは思いません。 すべてのステップで多くの経験が得られました。



アカウントあたり25ドルと多くの個人的な時間がプロジェクトに投資されましたが、当初は獲得する目標がありませんでした。 むしろ、私が暇なときにそれをするからという理由だけで、私はこれを趣味と見なします。 そしてそれは喜びをもたらすからです。



All Articles