若者フォローって事で
CliCkin2DaBeaT という音ゲーなアプリ解析。まずは AndroidManifest.xml からチェキ。
Activity は全部で三つな模様。エントリポイントは C2B になっている模様。onCreate メソドは以下か。
/** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); UpdateChecker checker = new UpdateChecker(); int latestVersion = checker.getLatestVersionCode(); String packageName = C2B.class.getPackage().getName(); int currentVersion = 0; try { currentVersion = getPackageManager().getPackageInfo(packageName, 0).versionCode; } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (latestVersion > currentVersion){ marketId = checker.marketId; displayUpdateMessage(); } else { resetGame(); } }
これ、殆どがパケジの更新に関するソレですな。これはこれで参考になるのですが、resetGame メソドが本体か。
色々見てたんですが
resetGame メソド始点だと色々微妙なんですが、逆回しで確認してみました。
- loadC2B メソドから runC2B メソドが呼び出されている
- loadC2B メソドは displayC2BFiles メソドで作られる AlertDialog の PositiveButton クリック時に呼び出される
- displayC2BFiles メソドは
- displayCreateLevelAlert メソドで作られる AlertDialog の NagativeButton クリック時に呼び出される
- displayStartupMessage メソドで作られる AlertDialog の PositiveButton クリック時に呼び出される
- displayStartupMessage メソドは resetGame メソドから呼び出される (ここが始点?
- displayCreateLevelAlert メソドは
- runC2B メソドから呼び出されている
- displayCreateLevelAlert メソドで作られる AlertDialog の PositiveButton クリック時に呼び出される
- displayCreateLevelAlert メソドで作られる AlertDialog の NagativeButton クリック時に呼び出される
- 両方共に busyProcessing が true の場合限定
つー事で、loadC2B メソドなんですが、核心部分が以下。
private void loadC2B(String fileUriString) { try { FileInputStream fis = new FileInputStream(fileUriString); DocumentBuilder docBuild; docBuild = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document c2b = docBuild.parse(fis); runC2B(c2b);
Document って何でしょ。というか結局 runC2B メソドが核心な模様です。中身は別途確認、なんですが、C2B なソレって XML データみたい。
なんとなくパースして云々してるのは分かるんですが、どこでゲイムが始まるんでしょ。あ、resetGame の
- VideoView#setOnPreparedListener メソド呼び出し
- VideoView#setOnErrorListener メソド呼び出し
- VideoView#setOnCompletionListener メソド呼び出し
なのか。でも、どこでタイミング合わせてたりとかするのか微妙。Target とか確認必要らしい。