Merge branch 'master' of https://github.com/reicast/reicast-emulator
|
@ -10,3 +10,29 @@ newdc/android/libnewdc/bin/libnewdc.jar
|
|||
newdc/android/libnewdc/bin/classes/com/example/newdc/JNIdc.class
|
||||
|
||||
shell/android/assets/build
|
||||
shell/android/tools
|
||||
|
||||
# iOS/Xcode general stuff
|
||||
.DS_Store
|
||||
*/build/*
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
profile
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
.idea/
|
||||
*.hmap
|
||||
emulator.xccheckout
|
||||
reicast.xccheckout
|
||||
build/*
|
||||
*.so
|
||||
*Karen_angelXwind*
|
||||
local.properties
|
||||
ant.properties
|
||||
|
|
55
README.md
|
@ -1,8 +1,8 @@
|
|||
reicast
|
||||
===========
|
||||
reicast is a sega dreamcast emulator
|
||||
reicast is a multi-platform Sega Dreamcast emulator.
|
||||
|
||||
This is developer oriented resource, if you just want bins head over to http://reicast.com
|
||||
This is a developer-oriented resource, if you just want bins head over to http://reicast.com/
|
||||
|
||||
Caution
|
||||
-------
|
||||
|
@ -16,7 +16,7 @@ If you are interested into further porting/adapting/whatever, *please* don't for
|
|||
|
||||
Let's try to keep everything under a single project :)
|
||||
|
||||
To build for android
|
||||
Building for Android
|
||||
--------------------
|
||||
Tools required:
|
||||
* Latest Android SDK
|
||||
|
@ -31,31 +31,50 @@ Tools required:
|
|||
|
||||
From project root directory:
|
||||
```
|
||||
export ANDROID_NDK=\ <-Type the full path to your NDK here
|
||||
export ANDROID_NDK=/ # Type the full path to your NDK here
|
||||
|
||||
cd shell\android
|
||||
cd shell/android/
|
||||
|
||||
android update project -p . --target "android-19"
|
||||
|
||||
ant debug
|
||||
```
|
||||
|
||||
Building for iOS
|
||||
----------------
|
||||
Tools required:
|
||||
* Latest Xcode
|
||||
- https://developer.apple.com/xcode/downloads/
|
||||
* An iOS device (reicast will not compile for the iOS Simulator)
|
||||
* iOS 5.x ~ 7.x
|
||||
* iOSOpenDev if developing without an official Apple certificate
|
||||
- http://iosopendev.com/download/
|
||||
|
||||
From project root directory:
|
||||
|
||||
```
|
||||
cd shell/ios/
|
||||
|
||||
xcodebuild -configuration Release
|
||||
```
|
||||
|
||||
Translations
|
||||
------------
|
||||
New and updated translations are always appreciated!
|
||||
All we ask is that you not use “regional” phrases that may not be generally understood.
|
||||
|
||||
Translations can be submitted as a pull request or at http://reicast.loungekatt.com/translate
|
||||
Translations can be submitted as a pull request
|
||||
|
||||
|
||||
Beta versions
|
||||
-------------
|
||||
Compiled test versions are available at reicast.loungekatt.com
|
||||
Automated Git builds can be found at http://reicast.angelxwind.net/ for iOS and Android.
|
||||
|
||||
Donations and stuff
|
||||
-------------------
|
||||
Well, glad you liked the project so far!
|
||||
|
||||
We're currently short on hardware
|
||||
We're currently short on hardware.
|
||||
|
||||
If you would like to donate some devices, get in touch at team@reicast.com. GLES3 capable stuff, some mainstream hardware and rarities would be extremely appreciated.
|
||||
Keep in mind we're located in Greece for the most part
|
||||
|
@ -67,32 +86,39 @@ This has been tested/developed on
|
|||
* Some Chinese tablet
|
||||
* OUYA
|
||||
* Various development boards
|
||||
* gcw zero
|
||||
* GCW Zero
|
||||
|
||||
We had to buy all of these, except the gcw zero and a beaglebone which were donated (thanks! You rock!)
|
||||
We had to buy all of these, except the GCW Zero and a BeagleBone which were donated (Thanks! You rock!)
|
||||
|
||||
Apart from that, we don't accept monetary donations right now.
|
||||
We also don't plan to be releasing a premium version at any store.
|
||||
Most of the project has been developed by drk||Raziel (aka, skmp, drk, Raz, etc) but it has been based on the
|
||||
works of multiple people. It would be extremely unfair to charge for it and get all the credit :)
|
||||
|
||||
|
||||
We're planning for an indiegogo campaign later on to help with sustained development and running costs, so follow @reicastdc on twitter for updates
|
||||
|
||||
Other Testing
|
||||
-------------
|
||||
These devices are tested by contributors regularly
|
||||
These devices are tested by Karen/angelXwind:
|
||||
* Apple iPhone 4 GSM Rev0 (N90AP)
|
||||
* Apple iPhone 4 CDMA (N92AP)
|
||||
* Apple iPod touch 4 (N81AP)
|
||||
* Apple iPod touch 3G (N18AP)
|
||||
* Apple iPhone 3GS (N88AP)
|
||||
* Sony Xperia X10a (es209ra)
|
||||
* Amazon Kindle Fire HD 7 (tate-pvt-08)
|
||||
|
||||
These devices are tested by contributors regularly:
|
||||
* Nvidia Shield
|
||||
* Nexus 5 / 7
|
||||
* Xperia Play
|
||||
|
||||
|
||||
Team
|
||||
----
|
||||
|
||||
You can check the currently active committers on [the pretty graphs page](https://github.com/reicast/reicast-emulator/graphs/contributors)
|
||||
|
||||
Chat on freenode #reicast.
|
||||
Our IRC channel is [#reicast @ chat.freenode.net](irc://chat.freenode.net/reicast).
|
||||
|
||||
The original reicast team consisted of drk||Raziel (mostly just writing code), PsyMan (debugging/testing and everything else) and a little bit of gb_away
|
||||
|
||||
|
@ -101,6 +127,5 @@ Special thanks
|
|||
--------------
|
||||
In previous iterations a lot of people have worked on this, notably David Miller (aka, ZeZu), the nullDC team, friends from #pcsx2 and all over the world :)
|
||||
|
||||
|
||||
[](https://bitdeli.com/free "Bitdeli Badge")
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
|
||||
org.eclipse.jdt.core.compiler.compliance=1.5
|
||||
org.eclipse.jdt.core.compiler.source=1.5
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
||||
|
|
|
@ -1 +1 @@
|
|||
382f2e5c19c85627f23bdc8e6cc2c59c97262bc3
|
||||
6097b6f5b009454b5c041f89f429f96aa1e795f6
|
|
@ -36,35 +36,4 @@
|
|||
android:gravity="center"
|
||||
android:text="@string/app_site" />
|
||||
|
||||
<SlidingDrawer
|
||||
android:id="@+id/slidingGithub"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:content="@+id/changelist"
|
||||
android:handle="@+id/handle"
|
||||
android:topOffset="40dp" >
|
||||
|
||||
<Button
|
||||
android:id="@+id/handle"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:background="@drawable/ic_github" >
|
||||
</Button>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/changelist"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<ListView
|
||||
android:id="@+id/list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:divider="#b5b5b5"
|
||||
android:dividerHeight="1dp"
|
||||
android:listSelector="@drawable/list_selector" />
|
||||
</RelativeLayout>
|
||||
</SlidingDrawer>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/change"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/list_selector"
|
||||
android:orientation="horizontal"
|
||||
android:padding="5dip" >
|
||||
|
||||
<!-- ListRow Left Thumbnail image -->
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/thumbnail"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_marginRight="5dip"
|
||||
android:background="@drawable/image_bg"
|
||||
android:padding="3dip" >
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/avatar"
|
||||
android:layout_width="60dip"
|
||||
android:layout_height="60dip"
|
||||
android:gravity="center"
|
||||
android:src="@drawable/ic_github" />
|
||||
</LinearLayout>
|
||||
<!-- Main Commit Content -->
|
||||
|
||||
<TextView
|
||||
android:id="@+id/committer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dip"
|
||||
android:layout_toRightOf="@+id/thumbnail"
|
||||
android:text="GitHub Committer"
|
||||
android:textColor="#040404"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:typeface="sans" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/committer"
|
||||
android:layout_marginTop="2dip"
|
||||
android:layout_toRightOf="@+id/thumbnail"
|
||||
android:text="GitHub Commit Message"
|
||||
android:textColor="#343434"
|
||||
android:textSize="12sp" />
|
||||
|
||||
<!-- Right Date -->
|
||||
|
||||
<TextView
|
||||
android:id="@+id/date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignTop="@id/thumbnail"
|
||||
android:layout_marginRight="5dip"
|
||||
android:gravity="right"
|
||||
android:text="January 25, 2012"
|
||||
android:textColor="#10bcc9"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
</RelativeLayout>
|
|
@ -1,32 +0,0 @@
|
|||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/toast_layout_root"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:background="#50FFFFFF"
|
||||
android:orientation="horizontal"
|
||||
android:padding="5dp"
|
||||
android:alpha="0.5">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/image"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:adjustViewBounds="true"
|
||||
android:maxHeight="80dip"
|
||||
android:maxWidth="80dip" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toRightOf="@+id/image"
|
||||
android:layout_marginLeft="5dip"
|
||||
android:includeFontPadding="false"
|
||||
android:lineSpacingMultiplier="1.0"
|
||||
android:textColor="#000000"
|
||||
android:textSize="18dip"
|
||||
android:typeface="sans" />
|
||||
|
||||
</RelativeLayout>
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<WebView
|
||||
android:id="@+id/webframe"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:scrollbars="none" />
|
||||
|
||||
</LinearLayout>
|
|
@ -1,73 +1,97 @@
|
|||
<resources>
|
||||
|
||||
<string name="menu_settings">セッティング</string>
|
||||
<string name="system_path">システムパス (とのデータフォルダーの場所 dc_boot.bin/dc_flash.bin)</string>
|
||||
<string name="menu_settings">設定</string>
|
||||
|
||||
<string name="system_path">システムパス(dc_boot.bin/dc_flash.binの場所)</string>
|
||||
<string name="browser_path">デフォルトのシステムパス</string>
|
||||
<string name="games_path">ストレージパス (の場所 .gdi .cdi or .cdh イメージ)</string>
|
||||
<string name="games_path">ストレージパス(*.gdi、*.cdi、または*.cdhイメージの場所)</string>
|
||||
<string name="game_path">デフォルトゲーム·ストレージ</string>
|
||||
<string name="config_home">ホームディレクトリを設定してください。</string>
|
||||
<string name="config_game">ゲームディレクトリを設定してください。</string>
|
||||
<string name="unsupported">カーネルのバージョンはサポートされていません!</string>
|
||||
|
||||
<string name="boot_bios">ブートドリームキャストビオス</string>
|
||||
<string name="missing_bios">BIOSが不足している。ドリームキャストBIOSが動作するように、このエミュレータに必要です。 BIOSファイル内に配置します %1$s/data/dc_boot.bin</string>
|
||||
<string name="missing_flash">行方不明に点滅します。ドリームキャストのFlashが動作するためにこのエミュレータに必要です。 Flashファイル内に配置します %1$s/data/dc_flash.bin</string>
|
||||
<string name="require_bios">あなたは、BIOSを提供する必要が</string>
|
||||
<string name="boot_bios">ドリームキャストBIOSをスタート</string>
|
||||
<string name="missing_bios">ドリームキャストBIOSが不足している。ドリームキャストBIOSが動作するためreicastために必要です。ここでBIOSファイルを入れてください:%1$s/data/dc_boot.bin</string>
|
||||
<string name="missing_flash">ドリームキャストFlashが不足している。ドリームキャストFlashが動作するためreicastために必要です。ここでFlashファイルを入れてください:%1$s/data/dc_flash.bin</string>
|
||||
<string name="require_bios">BIOSファイルを提供する必要があります。</string>
|
||||
<string name="data_folder">データフォルダが想定されます。</string>
|
||||
<string name="git_broken">GitHub Nativeは使用できません!</string>
|
||||
|
||||
<string name="folder_bios">BOOT BIOSを</string>
|
||||
<string name="folder_select">現在のフォルダを選択</string>
|
||||
<string name="folder_bios">BIOSをスタートする</string>
|
||||
<string name="folder_select">フォルダーを選択</string>
|
||||
|
||||
<string name="select_dynarec">Dynarecオプション</string>
|
||||
<string name="optimization_opts">最適化とデバッグの設定</string>
|
||||
<string name="experimental_opts">実験的</string>
|
||||
<string name="select_native">ネイティブインタフェースを使用</string>
|
||||
<string name="select_dynarec">Dynarecの設定</string>
|
||||
<string name="select_unstable">不安定な最適化</string>
|
||||
<string name="select_region">DC地域</string>
|
||||
<string name="select_limitfps">限界FPS</string>
|
||||
<string name="select_mipmaps">ミップマップを使用してください(SGX540フィックス)</string>
|
||||
<string name="select_broadcast">ブロードキャスト</string>
|
||||
<string name="select_limitfps">FPSを制限</string>
|
||||
<string name="select_mipmaps">ミップマップを使用(SGX540のフィックス)</string>
|
||||
<string name="select_stretch">ワイドスクリーンモード</string>
|
||||
<string name="set_frameskip">フレーム船舶の価値</string>
|
||||
<string name="select_render">PVRレンダリング</string>
|
||||
<string name="set_frameskip">フレームスキップ</string>
|
||||
<string name="select_render">PVRレンダリング(現在役に立たない)</string>
|
||||
<string name="select_fps">FPSを表示</string>
|
||||
<string name="select_software">ソフトウェアレンダリング</string>
|
||||
<string name="select_sound">サウンドを無効に</string>
|
||||
<string name="select_depth">レンダラの深度</string>
|
||||
<string name="select_force_gpu">v6 GPU設定を有効に</string>
|
||||
<string name="default_disk">デフォルトディスク</string>
|
||||
|
||||
<string name="games_listing">利用可能なドリームキャストのゲーム</string>
|
||||
<string name="games_listing">ゲームリスト</string>
|
||||
|
||||
<string name="customize_touch_controls">タッチコントロールをカスタマイズする</string>
|
||||
<string name="launch_editor">エディタを起動します</string>
|
||||
<string name="touch_vibration">振動をタッチ</string>
|
||||
<string name="controller_a">コントローラ A</string>
|
||||
<string name="controller_b">コントローラ B</string>
|
||||
<string name="controller_c">コントローラ C</string>
|
||||
<string name="controller_d">コントローラ D</string>
|
||||
<string name="controller_not_connected">コントローラ接続されていません</string>
|
||||
<string name="controller_none_selected">でコントローラ選択されていません</string>
|
||||
<string name="report_issue">前回のクラッシュ検出された</string>
|
||||
<string name="bios_config">設定が失敗しました!</string>
|
||||
|
||||
<string name="customize_touch_controls">タッチコントロールを編集</string>
|
||||
<string name="launch_editor">エディタをスタート</string>
|
||||
<string name="touch_vibration">振動</string>
|
||||
<string name="controller_a">コントローラA</string>
|
||||
<string name="controller_b">コントローラB</string>
|
||||
<string name="controller_c">コントローラC</string>
|
||||
<string name="controller_d">コントローラD</string>
|
||||
<string name="controller_not_connected">コントローラが接続されていません</string>
|
||||
<string name="controller_none_selected">コントローラが選択されていない。</string>
|
||||
<string name="select">選択する</string>
|
||||
<string name="remove">削除する</string>
|
||||
<string name="select_controller_title">セレクトコントローラ</string>
|
||||
<string name="select_controller_message">ポートに割り当てるコントローラのいずれかのボタンを押してください</string>
|
||||
<string name="controller_already_in_use">このコントローラは、すでに使用されています!</string>
|
||||
<string name="modified_layout">カスタムキーレイアウトを可能にする</string>
|
||||
<string name="controller_compat">互換モードを有効にする</string>
|
||||
<string name="select_controller_title">コントローラを選択</string>
|
||||
<string name="select_controller_message">ポートに%1$sコントローラを割り当てるには、いずれかのボタンを押してください。</string>
|
||||
<string name="controller_already_in_use">このコントローラはすでに使用されています。</string>
|
||||
<string name="joystick_layout">Dパッドとしてジョイスティックを使用</string>
|
||||
<string name="modified_layout">カスタムキーレイアウトを有効に</string>
|
||||
<string name="controller_compat">互換モードを有効に</string>
|
||||
<string name="mic_in_port_2">ポート2に接続されたマイク</string>
|
||||
|
||||
<string name="customize_physical_controls">物理コントロールをカスタマイズする</string>
|
||||
<string name="map_keycode_title">コントローラを変更する</string>
|
||||
<string name="map_keycode_message">のための新しいコントローラのボタンを押してください %1$s</string>
|
||||
<string name="customize_physical_controls">物理コントロールを編集</string>
|
||||
<string name="map_keycode_title">コントローラを編集する</string>
|
||||
<string name="map_keycode_message">%1$sボタンを押してください</string>
|
||||
|
||||
<string name="moga_pro_connect">MOGAプロ接続!</string>
|
||||
<string name="moga_connect">MOGA接続!</string>
|
||||
<string name="moga_pro_connect">MOGAプロが接続された!</string>
|
||||
<string name="moga_connect">MOGAが接続された!</string>
|
||||
|
||||
<string name="about_text">reicastはドリームキャストエミュレータです</string>
|
||||
<string name="revision_text">バージョン: %1$s [%2$s]</string>
|
||||
<string name="about_text">reicastはマルチプラットフォームのドリームキャストエミュレータです。</string>
|
||||
<string name="revision_text">バージョン:%1$s [%2$s]</string>
|
||||
|
||||
<string-array name="controllers">
|
||||
<item>コントローラ A</item>
|
||||
<item>コントローラ B</item>
|
||||
<item>コントローラ C</item>
|
||||
<item>コントローラ D</item>
|
||||
<item>コントローラA</item>
|
||||
<item>コントローラB</item>
|
||||
<item>コントローラC</item>
|
||||
<item>コントローラD</item>
|
||||
</string-array>
|
||||
|
||||
<string name="browser">ブラウザ</string>
|
||||
<string name="settings">セッティング</string>
|
||||
<string name="browser">ブラウザー</string>
|
||||
<string name="settings">設定</string>
|
||||
<string name="paths">パス</string>
|
||||
<string name="input">コントローラー</string>
|
||||
<string name="about">およそ</string>
|
||||
<string name="about">reicastについて</string>
|
||||
<string name="rateme">私を評価してください</string>
|
||||
<string name="messages">テストスイート</string>
|
||||
|
||||
<string name="textOn">上の</string>
|
||||
<string name="textOn">オン</string>
|
||||
<string name="textOff">オフ</string>
|
||||
|
||||
<string name="cancel">キャンセル</string>
|
||||
<string name="manual">マニュアル</string>
|
||||
|
||||
</resources>
|
|
@ -3,9 +3,6 @@
|
|||
<string name="app_name">reicast</string>
|
||||
|
||||
<string name="app_site">Homepage: http://reicast.com</string>
|
||||
<string name="git_api">https://api.github.com/repos/reicast/reicast-emulator/commits</string>
|
||||
<string name="git_issues">https://github.com/reicast/reicast-emulator/issues/</string>
|
||||
<string name="log_url">http://twisted.dyndns.tv:3194/ReicastBot/report/submit.php</string>
|
||||
|
||||
<string name="error_kernel"></string>
|
||||
|
||||
|
|
|
@ -4,49 +4,50 @@
|
|||
|
||||
<string name="system_path">System Path (location of the data folder with dc_boot.bin/dc_flash.bin inside)</string>
|
||||
<string name="browser_path">Default System Path</string>
|
||||
<string name="games_path">Storage Path (location of .gdi, .chd or .cdi images)</string>
|
||||
<string name="games_path">Storage Path (location of *.gdi, *.chd or *.cdi images)</string>
|
||||
<string name="game_path">Default Game Storage</string>
|
||||
<string name="config_home">Please configure a home directory</string>
|
||||
<string name="config_game">Please configure a games directory</string>
|
||||
<string name="unsupported">Unsupported Kernel Version!</string>
|
||||
<string name="config_home">Please configure a home directory.</string>
|
||||
<string name="config_game">Please configure a game directory.</string>
|
||||
<string name="unsupported">Unsupported kernel version!</string>
|
||||
|
||||
<string name="boot_bios">Boot Dreamcast Bios</string>
|
||||
<string name="missing_bios">BIOS Missing. The Dreamcast BIOS is required for this emulator to work. Place the BIOS file in %1$s/data/dc_boot.bin</string>
|
||||
<string name="missing_flash">Flash Missing. The Dreamcast Flash is required for this emulator to work. Place the Flash file in %1$s/data/dc_flash.bin</string>
|
||||
<string name="require_bios">You have to provide the BIOS</string>
|
||||
<string name="data_folder">The data folder is assumed</string>
|
||||
<string name="git_broken">GitHub Native Unavailable!</string>
|
||||
<string name="boot_bios">Boot Dreamcast BIOS</string>
|
||||
<string name="missing_bios_title">Missing Dreamcast BIOS</string>
|
||||
<string name="missing_bios">The Dreamcast BIOS is missing. A dump of the Dreamcast BIOS is required for this emulator to work. Make sure the BIOS file is named "dc_boot.bin" and is in %1$s/data/dc_boot.bin</string>
|
||||
<string name="missing_flash_title">Missing Dreamcast Flash ROM</string>
|
||||
<string name="missing_flash">The Dreamcast Flash is missing. A dump of the Dreamcast Flash is required for this emulator to work. Make sure the Flash file is named "dc_flash.bin" and is in %1$s/data/dc_flash.bin</string>
|
||||
<string name="require_bios">You have to provide a Dreamcast BIOS.</string>
|
||||
<string name="data_folder">The current data folder is assumed.</string>
|
||||
|
||||
<string name="folder_bios">BOOT BIOS</string>
|
||||
<string name="folder_select">SELECT CURRENT FOLDER</string>
|
||||
<string name="folder_bios">Boot BIOS</string>
|
||||
<string name="folder_select">Select current folder</string>
|
||||
|
||||
<string name="optimization_opts">Optimization and Debugging Options</string>
|
||||
<string name="experimental_opts">Expert (May cause widespread panic)</string>
|
||||
<string name="experimental_opts">Experimental (May cause widespread panic)</string>
|
||||
<string name="select_native">Enable Native Interface</string>
|
||||
<string name="select_dynarec">Dynarec Options</string>
|
||||
<string name="select_unstable">Unstable Optimisations</string>
|
||||
<string name="select_region">DC Region</string>
|
||||
<string name="select_broadcast">Broadcast</string>
|
||||
<string name="select_limitfps">Limit FPS</string>
|
||||
<string name="select_mipmaps">Use Mipmaps (fix for old SGX540)</string>
|
||||
<string name="select_mipmaps">Use Mipmaps (fixes SGX540)</string>
|
||||
<string name="select_stretch">Widescreen Mode</string>
|
||||
<string name="set_frameskip">Frameskip Value</string>
|
||||
<string name="select_render">PVR Rendering (does nothing for now)</string>
|
||||
<string name="select_fps">Show OnScreen FPS</string>
|
||||
<string name="select_fps">Show On-screen FPS</string>
|
||||
<string name="select_software">Force Software Rendering</string>
|
||||
<string name="select_sound">Disable Emulator Sound</string>
|
||||
<string name="select_depth">Rendering Depth</string>
|
||||
<string name="select_force_gpu">Force v6 GPU Config</string>
|
||||
<string name="default_disk">Set Default Disk</string>
|
||||
<string name="default_disk">Default Disk</string>
|
||||
|
||||
<string name="games_listing">Available Dreamcast Games</string>
|
||||
<string name="games_listing">Game List</string>
|
||||
|
||||
<string name="report_issue">Previous Crash Detected</string>
|
||||
<string name="bios_config">Configuration failed!</string>
|
||||
|
||||
<string name="customize_touch_controls">Customize Touch Controls</string>
|
||||
<string name="launch_editor">Launch Editor</string>
|
||||
<string name="touch_vibration">Touch Vibration</string>
|
||||
<string name="touch_vibration">Haptic Feedback</string>
|
||||
<string name="controller_a">Controller A</string>
|
||||
<string name="controller_b">Controller B</string>
|
||||
<string name="controller_c">Controller C</string>
|
||||
|
@ -58,7 +59,7 @@
|
|||
<string name="select_controller_title">Select Controller</string>
|
||||
<string name="select_controller_message">Press any button on the controller %1$s to assign to port</string>
|
||||
<string name="controller_already_in_use">This controller is already in use!</string>
|
||||
<string name="joystick_layout">Use Joystick For Dpad Input</string>
|
||||
<string name="joystick_layout">Use Joystick For D-Pad Input</string>
|
||||
<string name="modified_layout">Enable Custom Key Layout</string>
|
||||
<string name="controller_compat">Enable Compatibility Mode</string>
|
||||
<string name="mic_in_port_2">Microphone plugged into port 2</string>
|
||||
|
@ -67,17 +68,17 @@
|
|||
<string name="map_keycode_title">Modify Controller</string>
|
||||
<string name="map_keycode_message">Press the new controller button for %1$s</string>
|
||||
|
||||
<string name="moga_pro_connect">MOGA Pro Connected!</string>
|
||||
<string name="moga_connect">MOGA Connected!</string>
|
||||
<string name="moga_pro_connect">MOGA Pro connected!</string>
|
||||
<string name="moga_connect">MOGA connected!</string>
|
||||
|
||||
<string name="about_text">reicast is a dreamcast emulator</string>
|
||||
<string name="about_text">reicast is a multi-platform Dreamcast emulator.</string>
|
||||
<string name="revision_text">Version: %1$s [%2$s]</string>
|
||||
|
||||
<string-array name="controllers">
|
||||
<item>Controller A</item>
|
||||
<item>Controller B</item>
|
||||
<item>Controller C</item>
|
||||
<item>Controller D</item>
|
||||
<item>Controller A</item>
|
||||
<item>Controller B</item>
|
||||
<item>Controller C</item>
|
||||
<item>Controller D</item>
|
||||
</string-array>
|
||||
|
||||
<string name="browser">Browser</string>
|
||||
|
@ -92,6 +93,7 @@
|
|||
<string name="textOff">OFF</string>
|
||||
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="dismiss">Dismiss</string>
|
||||
<string name="manual">Manual</string>
|
||||
|
||||
<string name="options">Options</string>
|
||||
</resources>
|
|
@ -33,7 +33,7 @@
|
|||
<style name="fpsOverlayText">
|
||||
<item name="android:paddingLeft">4px</item>
|
||||
<item name="android:paddingBottom">4px</item>
|
||||
<item name="android:textColor">#ffffffff</item>
|
||||
<item name="android:textColor">#ffff00</item>
|
||||
<item name="android:textSize">32sp</item>
|
||||
<item name="android:shadowColor">#000000</item>
|
||||
<item name="android:shadowDx">1</item>
|
||||
|
|
|
@ -57,14 +57,6 @@ public class FileUtils {
|
|||
return null;
|
||||
}
|
||||
|
||||
public File[] listFilesAsArray(File directory, FilenameFilter[] filter,
|
||||
int recurse) {
|
||||
Collection<File> files = listFiles(directory, filter, recurse);
|
||||
|
||||
File[] arr = new File[files.size()];
|
||||
return files.toArray(arr);
|
||||
}
|
||||
|
||||
public Collection<File> listFiles(File directory, FilenameFilter[] filter,
|
||||
int recurse) {
|
||||
|
||||
|
@ -92,14 +84,13 @@ public class FileUtils {
|
|||
}
|
||||
|
||||
public static void saveScreenshot(final Context c, int w, int h, GL10 gl){
|
||||
try{
|
||||
try {
|
||||
File dir = new File(MainActivity.home_directory);
|
||||
SimpleDateFormat s = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||
String timestamp = s.format(new Date());
|
||||
File f = new File(dir.toString(), timestamp+".jpeg");
|
||||
File f = new File(dir.getAbsolutePath(), timestamp+".jpeg");
|
||||
FileOutputStream out = new FileOutputStream(f);
|
||||
savePixels(0, 0, w, h, gl).compress(Bitmap.CompressFormat.JPEG, 100, out);
|
||||
out.flush();
|
||||
out.close();
|
||||
//attempt to put into gallery app
|
||||
MediaScannerConnection.scanFile(c.getApplicationContext(), new String[]{f.toString()}, null, new OnScanCompletedListener() {
|
||||
|
@ -108,7 +99,7 @@ public class FileUtils {
|
|||
//c.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
|
||||
}
|
||||
});
|
||||
}catch(Exception e){
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
@ -116,26 +107,26 @@ public class FileUtils {
|
|||
//thank you stackoverflow
|
||||
public static Bitmap savePixels(int x, int y, int w, int h, GL10 gl)
|
||||
{
|
||||
int b[]=new int[w*(y+h)];
|
||||
int bt[]=new int[w*h];
|
||||
IntBuffer ib=IntBuffer.wrap(b);
|
||||
ib.position(0);
|
||||
gl.glReadPixels(x, 0, w, y+h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
|
||||
int b[]=new int[w*(y+h)];
|
||||
int bt[]=new int[w*h];
|
||||
IntBuffer ib=IntBuffer.wrap(b);
|
||||
ib.position(0);
|
||||
gl.glReadPixels(x, 0, w, y+h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
|
||||
|
||||
for(int i=0, k=0; i<h; i++, k++)
|
||||
{//remember, that OpenGL bitmap is incompatible with Android bitmap
|
||||
//and so, some correction need.
|
||||
for(int j=0; j<w; j++)
|
||||
{
|
||||
int pix=b[i*w+j];
|
||||
int pb=(pix>>16)&0xff;
|
||||
int pr=(pix<<16)&0x00ff0000;
|
||||
int pix1=(pix&0xff00ff00) | pr | pb;
|
||||
bt[(h-k-1)*w+j]=pix1;
|
||||
}
|
||||
}
|
||||
for(int i=0, k=0; i<h; i++, k++)
|
||||
{//remember, that OpenGL bitmap is incompatible with Android bitmap
|
||||
//and so, some correction need.
|
||||
for(int j=0; j<w; j++)
|
||||
{
|
||||
int pix=b[i*w+j];
|
||||
int pb=(pix>>16)&0xff;
|
||||
int pr=(pix<<16)&0x00ff0000;
|
||||
int pix1=(pix&0xff00ff00) | pr | pb;
|
||||
bt[(h-k-1)*w+j]=pix1;
|
||||
}
|
||||
}
|
||||
|
||||
Bitmap sb=Bitmap.createBitmap(bt, w, h, Bitmap.Config.ARGB_8888);
|
||||
return sb;
|
||||
Bitmap sb=Bitmap.createBitmap(bt, w, h, Bitmap.Config.ARGB_8888);
|
||||
return sb;
|
||||
}
|
||||
}
|
|
@ -1,111 +1,23 @@
|
|||
/* ====================================================================
|
||||
* Copyright (c) 2012-2013 Lounge Katt Entertainment. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this
|
||||
* software must display the following acknowledgment:
|
||||
* "This product includes software developed by Lounge Katt" unless
|
||||
* otherwise displayed by public repository entries.
|
||||
*
|
||||
* 4. The names "Lounge Katt", "TwistedUmbrella", and "LiveLog"
|
||||
* must not be used to endorse or promote products derived from this
|
||||
* software without prior written permission. For written permission,
|
||||
* please contact admin@loungekatt.com.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "LiveLog"
|
||||
* nor may "LiveLog" appear in their names without prior written
|
||||
* permission of Lounge Katt Entertainment.
|
||||
*
|
||||
* 6. Redistributions of any form whatsoever must retain the following
|
||||
* acknowledgment:
|
||||
* "This product includes software developed by Lounge Katt" unless
|
||||
* otherwise displayed by tagged repository entries.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY Lounge Katt ``AS IS'' AND ANY
|
||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* The license and distribution terms for any publicly available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution license
|
||||
* [including the GNU Public License.] Content not subject to these terms is
|
||||
* subject to to the terms and conditions of the Apache License, Version 2.0.
|
||||
*/
|
||||
|
||||
package com.reicast.emulator;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.StatusLine;
|
||||
import org.apache.http.client.ClientProtocolException;
|
||||
import org.apache.http.client.HttpClient;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.impl.client.DefaultHttpClient;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.text.util.Linkify;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.ListView;
|
||||
import android.widget.SlidingDrawer;
|
||||
import android.widget.SlidingDrawer.OnDrawerOpenListener;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.reicast.emulator.config.Config;
|
||||
import com.reicast.emulator.debug.GitAdapter;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class AboutFragment extends Fragment {
|
||||
|
||||
SlidingDrawer slidingGithub;
|
||||
private ListView list;
|
||||
private GitAdapter adapter;
|
||||
private Handler handler;
|
||||
String buildId = "";
|
||||
|
||||
private Activity parentActivity;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
|
@ -115,11 +27,9 @@ public class AboutFragment extends Fragment {
|
|||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
parentActivity = getActivity();
|
||||
handler = new Handler();
|
||||
|
||||
try {
|
||||
InputStream file = parentActivity.getAssets().open("build");
|
||||
InputStream file = getResources().getAssets().open("build");
|
||||
if (file != null) {
|
||||
BufferedReader reader = new BufferedReader(
|
||||
new InputStreamReader(file));
|
||||
|
@ -131,16 +41,16 @@ public class AboutFragment extends Fragment {
|
|||
}
|
||||
|
||||
try {
|
||||
String versionName = parentActivity.getPackageManager()
|
||||
.getPackageInfo(parentActivity.getPackageName(), 0).versionName;
|
||||
int versionCode = parentActivity.getPackageManager()
|
||||
.getPackageInfo(parentActivity.getPackageName(), 0).versionCode;
|
||||
String versionName = getActivity().getPackageManager()
|
||||
.getPackageInfo(getActivity().getPackageName(), 0).versionName;
|
||||
int versionCode = getActivity().getPackageManager()
|
||||
.getPackageInfo(getActivity().getPackageName(), 0).versionCode;
|
||||
TextView version = (TextView) getView().findViewById(
|
||||
R.id.revision_text);
|
||||
String revision = parentActivity.getString(R.string.revision_text,
|
||||
String revision = getString(R.string.revision_text,
|
||||
versionName, String.valueOf(versionCode));
|
||||
if (!buildId.equals("")) {
|
||||
revision = parentActivity.getString(R.string.revision_text,
|
||||
revision = getString(R.string.revision_text,
|
||||
versionName, buildId.substring(0,7));
|
||||
}
|
||||
version.setText(revision);
|
||||
|
@ -148,180 +58,7 @@ public class AboutFragment extends Fragment {
|
|||
e.printStackTrace();
|
||||
}
|
||||
|
||||
TextView website = (TextView) getView().findViewById(
|
||||
R.id.site_text);
|
||||
TextView website = (TextView) getView().findViewById(R.id.site_text);
|
||||
Linkify.addLinks(website, Linkify.ALL);
|
||||
|
||||
slidingGithub = (SlidingDrawer) getView().findViewById(
|
||||
R.id.slidingGithub);
|
||||
if (MainActivity.debugUser) {
|
||||
slidingGithub.setOnDrawerOpenListener(new OnDrawerOpenListener() {
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
public void onDrawerOpened() {
|
||||
String git = parentActivity.getString(R.string.git_api);
|
||||
retrieveGitTask queryGithub = new retrieveGitTask();
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
queryGithub.executeOnExecutor(
|
||||
AsyncTask.THREAD_POOL_EXECUTOR, git);
|
||||
} else {
|
||||
queryGithub.execute(git);
|
||||
}
|
||||
}
|
||||
});
|
||||
slidingGithub.open();
|
||||
} else {
|
||||
slidingGithub.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
public class retrieveGitTask extends
|
||||
AsyncTask<String, Integer, ArrayList<HashMap<String, String>>> {
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ArrayList<HashMap<String, String>> doInBackground(
|
||||
String... paths) {
|
||||
ArrayList<HashMap<String, String>> commitList = new ArrayList<HashMap<String, String>>();
|
||||
try {
|
||||
JSONArray gitObject = getContent(paths[0]);
|
||||
for (int i = 0; i < gitObject.length(); i++) {
|
||||
JSONObject jsonObject = gitObject.getJSONObject(i);
|
||||
|
||||
JSONObject commitArray = jsonObject.getJSONObject("commit");
|
||||
|
||||
String date = commitArray.getJSONObject("committer")
|
||||
.getString("date").replace("T", " ")
|
||||
.replace("Z", "");
|
||||
String author = commitArray.getJSONObject("author")
|
||||
.getString("name");
|
||||
String committer = commitArray.getJSONObject("committer")
|
||||
.getString("name");
|
||||
|
||||
String avatar = null;
|
||||
if (!jsonObject.getString("committer").equals("null")) {
|
||||
avatar = jsonObject.getJSONObject("committer")
|
||||
.getString("avatar_url");
|
||||
committer = committer
|
||||
+ " ("
|
||||
+ jsonObject.getJSONObject("committer")
|
||||
.getString("login") + ")";
|
||||
if (avatar.equals("null")) {
|
||||
avatar = "https://github.com/apple-touch-icon-144.png";
|
||||
}
|
||||
} else {
|
||||
avatar = "https://github.com/apple-touch-icon-144.png";
|
||||
}
|
||||
if (!jsonObject.getString("author").equals("null")) {
|
||||
author = author
|
||||
+ " ("
|
||||
+ jsonObject.getJSONObject("author").getString(
|
||||
"login") + ")";
|
||||
}
|
||||
String sha = jsonObject.getString("sha");
|
||||
String curl = jsonObject
|
||||
.getString("url")
|
||||
.replace("https://api.github.com/repos",
|
||||
"https://github.com")
|
||||
.replace("commits", "commit");
|
||||
|
||||
String title = "No commit heading attached";
|
||||
String message = "No commit message attached";
|
||||
|
||||
if (commitArray.getString("message").contains("\n\n")) {
|
||||
String fullOutput = commitArray.getString("message");
|
||||
title = fullOutput.substring(0,
|
||||
fullOutput.indexOf("\n\n"));
|
||||
message = fullOutput.substring(
|
||||
fullOutput.indexOf("\n\n") + 1,
|
||||
fullOutput.length());
|
||||
} else {
|
||||
title = commitArray.getString("message");
|
||||
}
|
||||
|
||||
HashMap<String, String> map = new HashMap<String, String>();
|
||||
map.put("Date", date);
|
||||
map.put("Committer", committer);
|
||||
map.put("Title", title);
|
||||
map.put("Message", message);
|
||||
map.put("Sha", sha);
|
||||
map.put("Url", curl);
|
||||
map.put("Author", author);
|
||||
map.put("Avatar", avatar);
|
||||
map.put("Build", buildId);
|
||||
commitList.add(map);
|
||||
}
|
||||
|
||||
} catch (JSONException e) {
|
||||
handler.post(new Runnable() {
|
||||
public void run() {
|
||||
Config.customNotify(parentActivity, R.drawable.ic_github, R.string.git_broken);
|
||||
slidingGithub.close();
|
||||
}
|
||||
});
|
||||
e.printStackTrace();
|
||||
} catch (Exception e) {
|
||||
handler.post(new Runnable() {
|
||||
public void run() {
|
||||
Config.customNotify(parentActivity, R.drawable.ic_github, R.string.git_broken);
|
||||
slidingGithub.close();
|
||||
}
|
||||
});
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return commitList;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(
|
||||
ArrayList<HashMap<String, String>> commitList) {
|
||||
if (commitList != null && commitList.size() > 0) {
|
||||
list = (ListView) getView().findViewById(R.id.list);
|
||||
list.setSelector(R.drawable.list_selector);
|
||||
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
|
||||
adapter = new GitAdapter(parentActivity, commitList);
|
||||
// Set adapter as specified collection
|
||||
list.setAdapter(adapter);
|
||||
|
||||
list.setOnItemClickListener(new OnItemClickListener() {
|
||||
public void onItemClick(AdapterView<?> parent, View view,
|
||||
int position, long id) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private JSONArray getContent(String urlString) throws IOException,
|
||||
JSONException {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
HttpClient client = new DefaultHttpClient();
|
||||
HttpGet httpGet = new HttpGet(urlString);
|
||||
try {
|
||||
HttpResponse response = client.execute(httpGet);
|
||||
StatusLine statusLine = response.getStatusLine();
|
||||
int statusCode = statusLine.getStatusCode();
|
||||
if (statusCode == 200) {
|
||||
HttpEntity entity = response.getEntity();
|
||||
InputStream content = entity.getContent();
|
||||
BufferedReader reader = new BufferedReader(
|
||||
new InputStreamReader(content));
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
builder.append(line);
|
||||
}
|
||||
} else {
|
||||
}
|
||||
} catch (ClientProtocolException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return new JSONArray(builder.toString());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,8 @@ import java.io.InputStream;
|
|||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
@ -17,7 +19,6 @@ import org.apache.commons.lang3.StringUtils;
|
|||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
|
@ -46,12 +47,12 @@ import com.reicast.emulator.emu.JNIdc;
|
|||
|
||||
public class FileBrowser extends Fragment {
|
||||
|
||||
Vibrator vib;
|
||||
Drawable orig_bg;
|
||||
Activity parentActivity;
|
||||
boolean ImgBrowse;
|
||||
private Vibrator vib;
|
||||
private Drawable orig_bg;
|
||||
private Activity parentActivity;
|
||||
private boolean ImgBrowse;
|
||||
private boolean games;
|
||||
OnItemSelectedListener mCallback;
|
||||
private OnItemSelectedListener mCallback;
|
||||
|
||||
private SharedPreferences mPrefs;
|
||||
private File sdcard = Environment.getExternalStorageDirectory();
|
||||
|
@ -84,9 +85,8 @@ public class FileBrowser extends Fragment {
|
|||
|
||||
// Container Activity must implement this interface
|
||||
public interface OnItemSelectedListener {
|
||||
public void onGameSelected(Uri uri);
|
||||
|
||||
public void onFolderSelected(Uri uri);
|
||||
void onGameSelected(Uri uri);
|
||||
void onFolderSelected(Uri uri);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -166,15 +166,14 @@ public class FileBrowser extends Fragment {
|
|||
}
|
||||
}
|
||||
|
||||
class LocateGames extends AsyncTask<String, Integer, List<File>> {
|
||||
private final class LocateGames extends AsyncTask<String, Integer, List<File>> {
|
||||
|
||||
@Override
|
||||
protected List<File> doInBackground(String... paths) {
|
||||
final List<File> tFileList = new ArrayList<File>();
|
||||
File storage = new File(paths[0]);
|
||||
Resources resources = parentActivity.getResources();
|
||||
|
||||
// array of valid image file extensions
|
||||
String[] mediaTypes = resources.getStringArray(R.array.images);
|
||||
String[] mediaTypes = parentActivity.getResources().getStringArray(R.array.images);
|
||||
FilenameFilter[] filter = new FilenameFilter[mediaTypes.length];
|
||||
|
||||
int i = 0;
|
||||
|
@ -196,39 +195,31 @@ public class FileBrowser extends Fragment {
|
|||
}
|
||||
|
||||
FileUtils fileUtils = new FileUtils();
|
||||
File[] allMatchingFiles = fileUtils.listFilesAsArray(storage,
|
||||
filter, 1);
|
||||
for (File mediaFile : allMatchingFiles) {
|
||||
tFileList.add(mediaFile);
|
||||
}
|
||||
return tFileList;
|
||||
Collection<File> files = fileUtils.listFiles(storage, filter, 1);
|
||||
return (List<File>) files;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(List<File> games) {
|
||||
final LinearLayout list = (LinearLayout) parentActivity
|
||||
.findViewById(R.id.game_list);
|
||||
final LinearLayout list = (LinearLayout) parentActivity.findViewById(R.id.game_list);
|
||||
list.removeAllViews();
|
||||
|
||||
String heading = parentActivity
|
||||
.getString(R.string.games_listing);
|
||||
String heading = parentActivity.getString(R.string.games_listing);
|
||||
createListHeader(heading, list, true);
|
||||
if (games != null && !games.isEmpty()) {
|
||||
for (int i = 0; i < games.size(); i++) {
|
||||
createListItem(list, games.get(i));
|
||||
for (final File game : games) {
|
||||
createListItem(list, game);
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(parentActivity, R.string.config_game,
|
||||
Toast.LENGTH_LONG).show();
|
||||
Toast.makeText(parentActivity, R.string.config_game, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
list.invalidate();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class DirSort implements Comparator<File> {
|
||||
private static final class DirSort implements Comparator<File> {
|
||||
|
||||
// Comparator interface requires defining compare method.
|
||||
@Override
|
||||
public int compare(File filea, File fileb) {
|
||||
|
||||
return ((filea.isFile() ? "a" : "b") + filea.getName().toLowerCase(
|
||||
|
@ -244,7 +235,7 @@ public class FileBrowser extends Fragment {
|
|||
R.layout.bios_list_item, null, false);
|
||||
|
||||
((TextView) childview.findViewById(R.id.item_name))
|
||||
.setText(parentActivity.getString(R.string.boot_bios));
|
||||
.setText(R.string.boot_bios);
|
||||
|
||||
childview.setTag(null);
|
||||
|
||||
|
@ -285,29 +276,26 @@ public class FileBrowser extends Fragment {
|
|||
.setImageResource(R.drawable.open_folder);
|
||||
((TextView) headerView.findViewById(R.id.item_name))
|
||||
.setText(header_text);
|
||||
((TextView) headerView.findViewById(R.id.item_name))
|
||||
.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
((TextView) headerView.findViewById(R.id.item_name))
|
||||
.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
((ViewGroup) view).addView(headerView);
|
||||
|
||||
}
|
||||
|
||||
private void createListItem(LinearLayout list, final File game) {
|
||||
final String name = game.getName();
|
||||
final String nameLower = name.toLowerCase(Locale.getDefault());
|
||||
final View childview = parentActivity.getLayoutInflater().inflate(
|
||||
R.layout.app_list_item, null, false);
|
||||
|
||||
((TextView) childview.findViewById(R.id.item_name)).setText(name);
|
||||
|
||||
((ImageView) childview.findViewById(R.id.item_icon))
|
||||
.setImageResource(game == null ? R.drawable.config : game
|
||||
.isDirectory() ? R.drawable.open_folder
|
||||
: name.toLowerCase(Locale.getDefault())
|
||||
.endsWith(".gdi") ? R.drawable.gdi : name
|
||||
.toLowerCase(Locale.getDefault()).endsWith(
|
||||
".cdi") ? R.drawable.cdi : name
|
||||
.toLowerCase(Locale.getDefault()).endsWith(
|
||||
".chd") ? R.drawable.chd
|
||||
: R.drawable.disk_unknown);
|
||||
.setImageResource(game.isDirectory() ? R.drawable.open_folder
|
||||
: nameLower.endsWith(".gdi") ? R.drawable.gdi
|
||||
: nameLower.endsWith(".cdi") ? R.drawable.cdi
|
||||
: nameLower.endsWith(".chd") ? R.drawable.chd
|
||||
: R.drawable.disk_unknown);
|
||||
|
||||
childview.setTag(name);
|
||||
|
||||
|
@ -354,7 +342,6 @@ public class FileBrowser extends Fragment {
|
|||
createListHeader(heading, v, false);
|
||||
|
||||
File flist[] = root_sd.listFiles();
|
||||
|
||||
File parent = root_sd.getParentFile();
|
||||
|
||||
list.add(null);
|
||||
|
@ -364,32 +351,27 @@ public class FileBrowser extends Fragment {
|
|||
|
||||
Arrays.sort(flist, new DirSort());
|
||||
|
||||
for (int i = 0; i < flist.length; i++)
|
||||
list.add(flist[i]);
|
||||
Collections.addAll(list, flist);
|
||||
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
if (list.get(i) != null && !list.get(i).isDirectory())
|
||||
for (final File file : list) {
|
||||
if (file != null && !file.isDirectory())
|
||||
continue;
|
||||
final View childview = parentActivity.getLayoutInflater().inflate(
|
||||
R.layout.app_list_item, null, false);
|
||||
|
||||
if (list.get(i) == null) {
|
||||
((TextView) childview.findViewById(R.id.item_name))
|
||||
.setText(getString(R.string.folder_select));
|
||||
} else if (list.get(i) == parent)
|
||||
((TextView) childview.findViewById(R.id.item_name))
|
||||
.setText("..");
|
||||
if (file == null) {
|
||||
((TextView) childview.findViewById(R.id.item_name)).setText(R.string.folder_select);
|
||||
} else if (file == parent)
|
||||
((TextView) childview.findViewById(R.id.item_name)).setText("..");
|
||||
else
|
||||
((TextView) childview.findViewById(R.id.item_name))
|
||||
.setText(list.get(i).getName());
|
||||
((TextView) childview.findViewById(R.id.item_name)).setText(file.getName());
|
||||
|
||||
((ImageView) childview.findViewById(R.id.item_icon))
|
||||
.setImageResource(list.get(i) == null ? R.drawable.config
|
||||
: list.get(i).isDirectory() ? R.drawable.open_folder
|
||||
.setImageResource(file == null ? R.drawable.config
|
||||
: file.isDirectory() ? R.drawable.open_folder
|
||||
: R.drawable.disk_unknown);
|
||||
|
||||
childview.setTag(list.get(i));
|
||||
final File item = list.get(i);
|
||||
childview.setTag(file);
|
||||
|
||||
orig_bg = childview.getBackground();
|
||||
|
||||
|
@ -398,8 +380,8 @@ public class FileBrowser extends Fragment {
|
|||
childview.findViewById(R.id.childview).setOnClickListener(
|
||||
new OnClickListener() {
|
||||
public void onClick(View view) {
|
||||
if (item != null && item.isDirectory()) {
|
||||
navigate(item);
|
||||
if (file != null && file.isDirectory()) {
|
||||
navigate(file);
|
||||
ScrollView sv = (ScrollView) parentActivity
|
||||
.findViewById(R.id.game_scroller);
|
||||
sv.scrollTo(0, 0);
|
||||
|
@ -436,11 +418,11 @@ public class FileBrowser extends Fragment {
|
|||
childview.findViewById(R.id.childview).setOnTouchListener(
|
||||
new OnTouchListener() {
|
||||
@SuppressWarnings("deprecation")
|
||||
public boolean onTouch(View view, MotionEvent arg1) {
|
||||
if (arg1.getActionMasked() == MotionEvent.ACTION_DOWN) {
|
||||
public boolean onTouch(View view, MotionEvent event) {
|
||||
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
|
||||
view.setBackgroundColor(0xFF4F3FFF);
|
||||
} else if (arg1.getActionMasked() == MotionEvent.ACTION_CANCEL
|
||||
|| arg1.getActionMasked() == MotionEvent.ACTION_UP) {
|
||||
} else if (event.getActionMasked() == MotionEvent.ACTION_CANCEL
|
||||
|| event.getActionMasked() == MotionEvent.ACTION_UP) {
|
||||
view.setBackgroundDrawable(orig_bg);
|
||||
}
|
||||
|
||||
|
|
|
@ -224,13 +224,17 @@ public class GL2JNIActivity extends Activity {
|
|||
}
|
||||
|
||||
private void initJoyStickLayout(int playerNum) {
|
||||
pad.globalLS_X[playerNum] = pad.previousLS_X[playerNum] = 0.0f;
|
||||
pad.globalLS_Y[playerNum] = pad.previousLS_Y[playerNum] = 0.0f;
|
||||
if (!pad.joystick[playerNum]) {
|
||||
pad.globalLS_X[playerNum] = pad.previousLS_X[playerNum] = 0.0f;
|
||||
pad.globalLS_Y[playerNum] = pad.previousLS_Y[playerNum] = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
private void runCompatibilityMode() {
|
||||
for (int n = 0; n < 4; n++) {
|
||||
if (pad.compat[n]) {
|
||||
String id = pad.portId[n];
|
||||
pad.joystick[n] = prefs.getBoolean(Gamepad.pref_js_separate + id, false);
|
||||
getCompatibilityMap(n, pad.portId[n]);
|
||||
initJoyStickLayout(n);
|
||||
}
|
||||
|
|
|
@ -246,13 +246,17 @@ public class GL2JNINative extends NativeActivity {
|
|||
}
|
||||
|
||||
private void initJoyStickLayout(int playerNum) {
|
||||
pad.globalLS_X[playerNum] = pad.previousLS_X[playerNum] = 0.0f;
|
||||
pad.globalLS_Y[playerNum] = pad.previousLS_Y[playerNum] = 0.0f;
|
||||
if (!pad.joystick[playerNum]) {
|
||||
pad.globalLS_X[playerNum] = pad.previousLS_X[playerNum] = 0.0f;
|
||||
pad.globalLS_Y[playerNum] = pad.previousLS_Y[playerNum] = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
private void runCompatibilityMode(int joy) {
|
||||
for (int n = 0; n < 4; n++) {
|
||||
if (pad.compat[n]) {
|
||||
String id = pad.portId[n];
|
||||
pad.joystick[n] = prefs.getBoolean(Gamepad.pref_js_separate + id, false);
|
||||
getCompatibilityMap(n, pad.portId[n]);
|
||||
pad.playerNumX.put(joy, n);
|
||||
initJoyStickLayout(n);
|
||||
|
|
|
@ -60,7 +60,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.mainuilayout_fragment);
|
||||
setBehindContentView(R.layout.drawer_menu);
|
||||
setBehindContentView(R.layout.drawer_menu);
|
||||
|
||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
|
||||
|
@ -71,7 +71,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
}
|
||||
|
||||
String prior_error = mPrefs.getString("prior_error", null);
|
||||
if (prior_error != null && !prior_error.equals(null)) {
|
||||
if (prior_error != null) {
|
||||
displayLogOutput(prior_error);
|
||||
mPrefs.edit().remove("prior_error").commit();
|
||||
} else {
|
||||
|
@ -175,7 +175,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
.replace(R.id.fragment_container, browseFrag,
|
||||
"MAIN_BROWSER").addToBackStack(null)
|
||||
.commit();
|
||||
setTitle(getString(R.string.browser));
|
||||
setTitle(R.string.browser);
|
||||
sm.toggle(true);
|
||||
}
|
||||
|
||||
|
@ -195,7 +195,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
.replace(R.id.fragment_container, configFrag,
|
||||
"CONFIG_FRAG").addToBackStack(null)
|
||||
.commit();
|
||||
setTitle(getString(R.string.settings));
|
||||
setTitle(R.string.settings);
|
||||
sm.toggle(true);
|
||||
}
|
||||
|
||||
|
@ -217,7 +217,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
.replace(R.id.fragment_container,
|
||||
optionsFrag, "OPTIONS_FRAG")
|
||||
.addToBackStack(null).commit();
|
||||
setTitle(getString(R.string.paths));
|
||||
setTitle(R.string.paths);
|
||||
sm.toggle(true);
|
||||
}
|
||||
|
||||
|
@ -237,7 +237,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
.beginTransaction()
|
||||
.replace(R.id.fragment_container, inputFrag,
|
||||
"INPUT_FRAG").addToBackStack(null).commit();
|
||||
setTitle(getString(R.string.input));
|
||||
setTitle(R.string.input);
|
||||
sm.toggle(true);
|
||||
}
|
||||
|
||||
|
@ -257,7 +257,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
.beginTransaction()
|
||||
.replace(R.id.fragment_container, aboutFrag,
|
||||
"ABOUT_FRAG").addToBackStack(null).commit();
|
||||
setTitle(getString(R.string.about));
|
||||
setTitle(R.string.about);
|
||||
sm.toggle(true);
|
||||
}
|
||||
|
||||
|
@ -274,7 +274,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
startActivity(new Intent(Intent.ACTION_VIEW, Uri
|
||||
.parse("market://details?id="
|
||||
+ getPackageName())));
|
||||
//setTitle(getString(R.string.rateme));
|
||||
//setTitle(R.string.rateme);
|
||||
sm.toggle(true);
|
||||
return true;
|
||||
} else
|
||||
|
@ -314,9 +314,9 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
*/
|
||||
private void displayLogOutput(final String error) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
|
||||
builder.setTitle(getString(R.string.report_issue));
|
||||
builder.setTitle(R.string.report_issue);
|
||||
builder.setMessage(error);
|
||||
builder.setNegativeButton("Dismiss",
|
||||
builder.setNegativeButton(R.string.dismiss,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
|
@ -352,32 +352,32 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
this);
|
||||
|
||||
// set title
|
||||
alertDialogBuilder.setTitle("You have to provide the BIOS");
|
||||
if (!isBiosExisting())
|
||||
alertDialogBuilder.setTitle(R.string.missing_bios_title);
|
||||
else if (!isFlashExisting())
|
||||
alertDialogBuilder.setTitle(R.string.missing_flash_title);
|
||||
|
||||
// set dialog message
|
||||
alertDialogBuilder
|
||||
.setMessage(msg)
|
||||
.setCancelable(false)
|
||||
.setPositiveButton("Dismiss",
|
||||
.setPositiveButton(R.string.dismiss,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog,
|
||||
int id) {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
// if this button is clicked, close
|
||||
// current activity
|
||||
// MainActivity.this.finish();
|
||||
}
|
||||
})
|
||||
.setNegativeButton("Options",
|
||||
.setNegativeButton(R.string.options,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog,
|
||||
int id) {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
FileBrowser firstFragment = new FileBrowser();
|
||||
Bundle args = new Bundle();
|
||||
// args.putBoolean("ImgBrowse", false);
|
||||
// specify ImgBrowse option. true = images,
|
||||
// false = folders only
|
||||
args.putString("browse_entry",
|
||||
sdcard.toString());
|
||||
args.putString("browse_entry", sdcard.toString());
|
||||
// specify a path for selecting folder
|
||||
// options
|
||||
args.putBoolean("games_entry", false);
|
||||
|
@ -520,7 +520,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
|||
.beginTransaction()
|
||||
.replace(R.id.fragment_container, fragment,
|
||||
"MAIN_BROWSER").commit();
|
||||
setTitle(getString(R.string.browser));
|
||||
setTitle(R.string.browser);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -115,33 +115,6 @@ public class Config {
|
|||
JNIdc.dreamtime(DreamTime.getDreamtime());
|
||||
}
|
||||
|
||||
public static void customNotify(Activity activity, int icon, int message) {
|
||||
LayoutInflater inflater = activity.getLayoutInflater();
|
||||
View layout = inflater.inflate(R.layout.toast_layout,
|
||||
(ViewGroup) activity.findViewById(R.id.toast_layout_root));
|
||||
|
||||
ImageView image = (ImageView) layout.findViewById(R.id.image);
|
||||
if (icon != -1) {
|
||||
image.setImageResource(icon);
|
||||
} else {
|
||||
image.setImageResource(R.drawable.ic_launcher);
|
||||
}
|
||||
|
||||
TextView text = (TextView) layout.findViewById(R.id.text);
|
||||
text.setText(activity.getString(message));
|
||||
|
||||
DisplayMetrics metrics = new DisplayMetrics();
|
||||
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
|
||||
final float scale = activity.getResources().getDisplayMetrics().density;
|
||||
int toastPixels = (int) ((metrics.widthPixels * scale + 0.5f) / 14);
|
||||
|
||||
Toast toast = new Toast(activity);
|
||||
toast.setGravity(Gravity.BOTTOM, 0, toastPixels);
|
||||
toast.setDuration(Toast.LENGTH_SHORT);
|
||||
toast.setView(layout);
|
||||
toast.show();
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the output of a shell command
|
||||
*
|
||||
|
|
|
@ -32,8 +32,6 @@ import de.ankri.views.Switch;
|
|||
|
||||
public class ConfigureFragment extends Fragment {
|
||||
|
||||
Activity parentActivity;
|
||||
OnClickListener mCallback;
|
||||
private Config config;
|
||||
|
||||
private SharedPreferences mPrefs;
|
||||
|
@ -62,12 +60,12 @@ public class ConfigureFragment extends Fragment {
|
|||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
// setContentView(R.layout.activity_main);
|
||||
|
||||
parentActivity = getActivity();
|
||||
//parentActivity = getActivity();
|
||||
|
||||
|
||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity);
|
||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
home_directory = mPrefs.getString(Config.pref_home, home_directory);
|
||||
config = new Config(parentActivity);
|
||||
config = new Config(getActivity());
|
||||
config.getConfigurationPrefs();
|
||||
|
||||
// Generate the menu options and fill in existing settings
|
||||
|
@ -115,23 +113,15 @@ public class ConfigureFragment extends Fragment {
|
|||
}
|
||||
unstable_opt.setOnCheckedChangeListener(unstable_option);
|
||||
|
||||
String[] regions = parentActivity.getResources()
|
||||
.getStringArray(R.array.region);
|
||||
|
||||
Spinner region_spnr = (Spinner) getView().findViewById(
|
||||
R.id.region_spinner);
|
||||
String[] regions = getResources().getStringArray(R.array.region);
|
||||
Spinner region_spnr = (Spinner) getView().findViewById(R.id.region_spinner);
|
||||
ArrayAdapter<String> regionAdapter = new ArrayAdapter<String>(
|
||||
parentActivity, R.layout.spinner_selected, regions);
|
||||
regionAdapter
|
||||
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
getActivity(), R.layout.spinner_selected, regions);
|
||||
regionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
region_spnr.setAdapter(regionAdapter);
|
||||
|
||||
region_spnr.setSelection(Config.dcregion, true);
|
||||
|
||||
region_spnr.setOnItemSelectedListener(new OnItemSelectedListener() {
|
||||
|
||||
public void onItemSelected(AdapterView<?> parent, View view,
|
||||
int pos, long id) {
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
|
||||
mPrefs.edit().putInt(Config.pref_dcregion, pos).commit();
|
||||
Config.dcregion = pos;
|
||||
|
||||
|
@ -140,17 +130,13 @@ public class ConfigureFragment extends Fragment {
|
|||
public void onNothingSelected(AdapterView<?> arg0) {
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
String[] broadcasts = parentActivity.getResources().getStringArray(
|
||||
R.array.broadcast);
|
||||
Spinner broadcast_spnr = (Spinner) getView().findViewById(
|
||||
R.id.broadcast_spinner);
|
||||
String[] broadcasts = getResources().getStringArray(R.array.broadcast);
|
||||
Spinner broadcast_spnr = (Spinner) getView().findViewById(R.id.broadcast_spinner);
|
||||
ArrayAdapter<String> broadcastAdapter = new ArrayAdapter<String>(
|
||||
parentActivity, R.layout.spinner_selected, broadcasts);
|
||||
broadcastAdapter
|
||||
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
getActivity(), R.layout.spinner_selected, broadcasts);
|
||||
broadcastAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
broadcast_spnr.setAdapter(broadcastAdapter);
|
||||
|
||||
int select = 0;
|
||||
|
@ -159,76 +145,66 @@ public class ConfigureFragment extends Fragment {
|
|||
if (broadcasts[i].startsWith(cast + " - "))
|
||||
select = i;
|
||||
}
|
||||
broadcast_spnr.setSelection(select, true);
|
||||
|
||||
broadcast_spnr.setSelection(select, true);
|
||||
broadcast_spnr.setOnItemSelectedListener(new OnItemSelectedListener() {
|
||||
|
||||
public void onItemSelected(AdapterView<?> parent, View view,
|
||||
int pos, long id) {
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
|
||||
String item = parent.getItemAtPosition(pos).toString();
|
||||
String selection = item.substring(0, item.indexOf(" - "));
|
||||
mPrefs.edit()
|
||||
.putInt(Config.pref_broadcast, Integer.valueOf(selection))
|
||||
.putInt(Config.pref_broadcast, Integer.parseInt(selection))
|
||||
.commit();
|
||||
Config.broadcast = Integer.valueOf(selection);
|
||||
Config.broadcast = Integer.parseInt(selection);
|
||||
|
||||
}
|
||||
|
||||
public void onNothingSelected(AdapterView<?> arg0) {
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
OnCheckedChangeListener limitfps_option = new OnCheckedChangeListener() {
|
||||
|
||||
public void onCheckedChanged(CompoundButton buttonView,
|
||||
boolean isChecked) {
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
mPrefs.edit().putBoolean(Config.pref_limitfps, isChecked).commit();
|
||||
Config.limitfps = isChecked;
|
||||
}
|
||||
};
|
||||
Switch limit_fps = (Switch) getView()
|
||||
.findViewById(R.id.limitfps_option);
|
||||
Switch limit_fps = (Switch) getView().findViewById(R.id.limitfps_option);
|
||||
limit_fps.setChecked(Config.limitfps);
|
||||
limit_fps.setOnCheckedChangeListener(limitfps_option);
|
||||
|
||||
OnCheckedChangeListener mipmaps_option = new OnCheckedChangeListener() {
|
||||
|
||||
public void onCheckedChanged(CompoundButton buttonView,
|
||||
boolean isChecked) {
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
mPrefs.edit().putBoolean(Config.pref_mipmaps, isChecked).commit();
|
||||
Config.mipmaps = isChecked;
|
||||
}
|
||||
};
|
||||
Switch mipmap_opt = (Switch) getView()
|
||||
.findViewById(R.id.mipmaps_option);
|
||||
Switch mipmap_opt = (Switch) getView().findViewById(R.id.mipmaps_option);
|
||||
mipmap_opt.setChecked(Config.mipmaps);
|
||||
mipmap_opt.setOnCheckedChangeListener(mipmaps_option);
|
||||
|
||||
OnCheckedChangeListener full_screen = new OnCheckedChangeListener() {
|
||||
|
||||
public void onCheckedChanged(CompoundButton buttonView,
|
||||
boolean isChecked) {
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
mPrefs.edit().putBoolean(Config.pref_widescreen, isChecked).commit();
|
||||
Config.widescreen = isChecked;
|
||||
}
|
||||
};
|
||||
Switch stretch_view = (Switch) getView().findViewById(
|
||||
R.id.stretch_option);
|
||||
Switch stretch_view = (Switch) getView().findViewById(R.id.stretch_option);
|
||||
stretch_view.setChecked(Config.widescreen);
|
||||
stretch_view.setOnCheckedChangeListener(full_screen);
|
||||
|
||||
final TextView mainFrames = (TextView) getView().findViewById(R.id.current_frames);
|
||||
mainFrames.setText(String.valueOf(Config.frameskip));
|
||||
|
||||
SeekBar frameSeek = (SeekBar) getView()
|
||||
.findViewById(R.id.frame_seekbar);
|
||||
SeekBar frameSeek = (SeekBar) getView().findViewById(R.id.frame_seekbar);
|
||||
frameSeek.setProgress(Config.frameskip);
|
||||
frameSeek.setIndeterminate(false);
|
||||
frameSeek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
|
||||
public void onProgressChanged(SeekBar seekBar, int progress,
|
||||
boolean fromUser) {
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
mainFrames.setText(String.valueOf(progress));
|
||||
}
|
||||
|
||||
|
@ -245,8 +221,7 @@ public class ConfigureFragment extends Fragment {
|
|||
|
||||
OnCheckedChangeListener pvr_rendering = new OnCheckedChangeListener() {
|
||||
|
||||
public void onCheckedChanged(CompoundButton buttonView,
|
||||
boolean isChecked) {
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
mPrefs.edit().putBoolean(Config.pref_pvrrender, isChecked).commit();
|
||||
Config.pvrrender = isChecked;
|
||||
}
|
||||
|
@ -255,8 +230,7 @@ public class ConfigureFragment extends Fragment {
|
|||
pvr_render.setChecked(Config.pvrrender);
|
||||
pvr_render.setOnCheckedChangeListener(pvr_rendering);
|
||||
|
||||
final EditText cheatEdit = (EditText) getView().findViewById(
|
||||
R.id.cheat_disk);
|
||||
final EditText cheatEdit = (EditText) getView().findViewById(R.id.cheat_disk);
|
||||
String disk = Config.cheatdisk;
|
||||
if (disk != null && disk.contains("/")) {
|
||||
cheatEdit.setText(disk.substring(disk.lastIndexOf("/"),
|
||||
|
@ -280,12 +254,10 @@ public class ConfigureFragment extends Fragment {
|
|||
}
|
||||
}
|
||||
|
||||
public void beforeTextChanged(CharSequence s, int start, int count,
|
||||
int after) {
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
|
||||
public void onTextChanged(CharSequence s, int start, int before,
|
||||
int count) {
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -301,13 +273,11 @@ public class ConfigureFragment extends Fragment {
|
|||
fps_opt.setChecked(counter);
|
||||
fps_opt.setOnCheckedChangeListener(fps_options);
|
||||
|
||||
final Switch force_gpu_opt = (Switch) getView().findViewById(
|
||||
R.id.force_gpu_option);
|
||||
final Switch force_gpu_opt = (Switch) getView().findViewById(R.id.force_gpu_option);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
|
||||
OnCheckedChangeListener force_gpu_options = new OnCheckedChangeListener() {
|
||||
|
||||
public void onCheckedChanged(CompoundButton buttonView,
|
||||
boolean isChecked) {
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
mPrefs.edit().putBoolean(Config.pref_forcegpu, isChecked).commit();
|
||||
}
|
||||
};
|
||||
|
@ -322,9 +292,12 @@ public class ConfigureFragment extends Fragment {
|
|||
R.id.software_option);
|
||||
OnCheckedChangeListener force_software = new OnCheckedChangeListener() {
|
||||
|
||||
public void onCheckedChanged(CompoundButton buttonView,
|
||||
boolean isChecked) {
|
||||
mPrefs.edit().putInt(Config.pref_rendertype, isChecked ? 1 : 2).commit();
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
mPrefs.edit()
|
||||
.putInt(Config.pref_rendertype,
|
||||
isChecked ? GL2JNIView.LAYER_TYPE_SOFTWARE
|
||||
: GL2JNIView.LAYER_TYPE_HARDWARE)
|
||||
.commit();
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
if (isChecked) {
|
||||
force_gpu_opt.setEnabled(false);
|
||||
|
@ -335,17 +308,14 @@ public class ConfigureFragment extends Fragment {
|
|||
}
|
||||
}
|
||||
};
|
||||
int software = mPrefs.getInt(Config.pref_rendertype,
|
||||
GL2JNIView.LAYER_TYPE_HARDWARE);
|
||||
force_software_opt
|
||||
.setChecked(software == GL2JNIView.LAYER_TYPE_SOFTWARE);
|
||||
int software = mPrefs.getInt(Config.pref_rendertype, GL2JNIView.LAYER_TYPE_HARDWARE);
|
||||
force_software_opt.setChecked(software == GL2JNIView.LAYER_TYPE_SOFTWARE);
|
||||
force_software_opt.setOnCheckedChangeListener(force_software);
|
||||
|
||||
Switch sound_opt = (Switch) getView().findViewById(R.id.sound_option);
|
||||
OnCheckedChangeListener emu_sound = new OnCheckedChangeListener() {
|
||||
|
||||
public void onCheckedChanged(CompoundButton buttonView,
|
||||
boolean isChecked) {
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
mPrefs.edit().putBoolean(Config.pref_nosound, isChecked).commit();
|
||||
Config.nosound = isChecked;
|
||||
}
|
||||
|
@ -354,15 +324,12 @@ public class ConfigureFragment extends Fragment {
|
|||
sound_opt.setChecked(sound);
|
||||
sound_opt.setOnCheckedChangeListener(emu_sound);
|
||||
|
||||
String[] depths = parentActivity.getResources().getStringArray(
|
||||
R.array.depth);
|
||||
String[] depths = getResources().getStringArray(R.array.depth);
|
||||
|
||||
Spinner depth_spnr = (Spinner) getView().findViewById(
|
||||
R.id.depth_spinner);
|
||||
Spinner depth_spnr = (Spinner) getView().findViewById(R.id.depth_spinner);
|
||||
ArrayAdapter<String> depthAdapter = new ArrayAdapter<String>(
|
||||
parentActivity, R.layout.spinner_selected, depths);
|
||||
depthAdapter
|
||||
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
getActivity(), R.layout.spinner_selected, depths);
|
||||
depthAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
depth_spnr.setAdapter(depthAdapter);
|
||||
|
||||
String depth = String.valueOf(mPrefs.getInt(Config.pref_renderdepth, 24));
|
||||
|
@ -370,19 +337,14 @@ public class ConfigureFragment extends Fragment {
|
|||
|
||||
depth_spnr.setOnItemSelectedListener(new OnItemSelectedListener() {
|
||||
|
||||
public void onItemSelected(AdapterView<?> parent, View view,
|
||||
int pos, long id) {
|
||||
int render = Integer.valueOf(parent.getItemAtPosition(pos)
|
||||
.toString());
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
|
||||
int render = Integer.parseInt(parent.getItemAtPosition(pos).toString());
|
||||
mPrefs.edit().putInt(Config.pref_renderdepth, render).commit();
|
||||
|
||||
}
|
||||
|
||||
public void onNothingSelected(AdapterView<?> arg0) {
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.app.Dialog;
|
|||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
|
@ -50,7 +51,7 @@ public class InputFragment extends Fragment {
|
|||
|
||||
// Container Activity must implement this interface
|
||||
public interface OnClickListener {
|
||||
public void onMainBrowseSelected(String path_entry, boolean games);
|
||||
void onMainBrowseSelected(String path_entry, boolean games);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -105,8 +106,7 @@ public class InputFragment extends Fragment {
|
|||
};
|
||||
switchTouchVibrationEnabled = (Switch) getView().findViewById(
|
||||
R.id.switchTouchVibrationEnabled);
|
||||
boolean vibrate = sharedPreferences.getBoolean(Config.pref_touchvibe,
|
||||
true);
|
||||
boolean vibrate = sharedPreferences.getBoolean(Config.pref_touchvibe, true);
|
||||
if (vibrate) {
|
||||
switchTouchVibrationEnabled.setChecked(true);
|
||||
} else {
|
||||
|
@ -120,7 +120,7 @@ public class InputFragment extends Fragment {
|
|||
false);
|
||||
micPluggedIntoFirstController.setChecked(micPluggedIn);
|
||||
if (getActivity().getPackageManager().hasSystemFeature(
|
||||
"android.hardware.microphone")) {
|
||||
PackageManager.FEATURE_MICROPHONE)) {
|
||||
// Microphone is present on the device
|
||||
micPluggedIntoFirstController
|
||||
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
||||
|
@ -286,7 +286,7 @@ public class InputFragment extends Fragment {
|
|||
buttonRemoveControllerPlayer1.setEnabled(true);
|
||||
} else {
|
||||
textViewDeviceDescriptorPlayer1
|
||||
.setText(getString(R.string.controller_none_selected));
|
||||
.setText(R.string.controller_none_selected);
|
||||
buttonRemoveControllerPlayer1.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
@ -306,7 +306,7 @@ public class InputFragment extends Fragment {
|
|||
buttonRemoveControllerPlayer2.setEnabled(true);
|
||||
} else {
|
||||
textViewDeviceDescriptorPlayer2
|
||||
.setText(getString(R.string.controller_none_selected));
|
||||
.setText(R.string.controller_none_selected);
|
||||
buttonRemoveControllerPlayer2.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
@ -326,7 +326,7 @@ public class InputFragment extends Fragment {
|
|||
buttonRemoveControllerPlayer3.setEnabled(true);
|
||||
} else {
|
||||
textViewDeviceDescriptorPlayer3
|
||||
.setText(getString(R.string.controller_none_selected));
|
||||
.setText(R.string.controller_none_selected);
|
||||
buttonRemoveControllerPlayer3.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
@ -346,7 +346,7 @@ public class InputFragment extends Fragment {
|
|||
buttonRemoveControllerPlayer4.setEnabled(true);
|
||||
} else {
|
||||
textViewDeviceDescriptorPlayer4
|
||||
.setText(getString(R.string.controller_none_selected));
|
||||
.setText(R.string.controller_none_selected);
|
||||
buttonRemoveControllerPlayer4.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
@ -356,17 +356,17 @@ public class InputFragment extends Fragment {
|
|||
listenForButton = playerNum;
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
|
||||
builder.setTitle(getString(R.string.select_controller_title));
|
||||
builder.setTitle(R.string.select_controller_title);
|
||||
builder.setMessage(getString(R.string.select_controller_message,
|
||||
String.valueOf(listenForButton)));
|
||||
builder.setPositiveButton(getString(R.string.cancel),
|
||||
builder.setPositiveButton(R.string.cancel,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
listenForButton = 0;
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(getString(R.string.manual),
|
||||
builder.setNegativeButton(R.string.manual,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
InputModFragment inputModFrag = new InputModFragment();
|
||||
|
@ -456,8 +456,7 @@ public class InputFragment extends Fragment {
|
|||
break;
|
||||
}
|
||||
|
||||
Log.d("New controller for port " + String.valueOf(listenForButton)
|
||||
+ ":", descriptor);
|
||||
Log.d("New controller for port " + listenForButton + ":", descriptor);
|
||||
|
||||
listenForButton = 0;
|
||||
alertDialogSelectController.cancel();
|
||||
|
@ -489,7 +488,7 @@ public class InputFragment extends Fragment {
|
|||
updateControllers();
|
||||
}
|
||||
|
||||
class MogaListener implements ControllerListener {
|
||||
private final class MogaListener implements ControllerListener {
|
||||
|
||||
private int playerNum;
|
||||
private String controllerId;
|
||||
|
@ -511,13 +510,14 @@ public class InputFragment extends Fragment {
|
|||
}
|
||||
|
||||
public void onStateEvent(StateEvent event) {
|
||||
if (event.getState() == StateEvent.STATE_CONNECTION
|
||||
&& event.getAction() == MOGAInput.ACTION_CONNECTED) {
|
||||
if (event.getState() == StateEvent.STATE_CONNECTION &&
|
||||
event.getAction() == MOGAInput.ACTION_CONNECTED) {
|
||||
|
||||
int mControllerVersion = moga.mController
|
||||
.getState(Controller.STATE_CURRENT_PRODUCT_VERSION);
|
||||
if (mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) {
|
||||
pad.isActiveMoga[playerNum] = true;
|
||||
} else if (mControllerVersion == Controller.ACTION_VERSION_MOGA) {
|
||||
.getState(Controller.STATE_CURRENT_PRODUCT_VERSION);
|
||||
|
||||
if (mControllerVersion == Controller.ACTION_VERSION_MOGA ||
|
||||
mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) {
|
||||
pad.isActiveMoga[playerNum] = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@ import java.io.IOException;
|
|||
import java.io.InputStream;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
|
@ -42,7 +41,6 @@ import de.ankri.views.Switch;
|
|||
|
||||
public class InputModFragment extends Fragment {
|
||||
|
||||
private Activity parentActivity;
|
||||
private SharedPreferences mPrefs;
|
||||
|
||||
private Switch switchJoystickDpadEnabled;
|
||||
|
@ -67,11 +65,9 @@ public class InputModFragment extends Fragment {
|
|||
private int playerNum = -1;
|
||||
private mapKeyCode mKey;
|
||||
|
||||
Gamepad pad = new Gamepad();
|
||||
|
||||
// Container Activity must implement this interface
|
||||
public interface OnClickListener {
|
||||
public void onMainBrowseSelected(String path_entry, boolean games);
|
||||
void onMainBrowseSelected(String path_entry, boolean games);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -83,17 +79,15 @@ public class InputModFragment extends Fragment {
|
|||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
parentActivity = getActivity();
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
|
||||
Runtime.getRuntime().freeMemory();
|
||||
System.gc();
|
||||
}
|
||||
|
||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity);
|
||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
|
||||
final String[] controllers = parentActivity.getResources()
|
||||
.getStringArray(R.array.controllers);
|
||||
final String[] controllers = getResources().getStringArray(R.array.controllers);
|
||||
|
||||
Bundle b = getArguments();
|
||||
if (b != null) {
|
||||
|
@ -141,7 +135,7 @@ public class InputModFragment extends Fragment {
|
|||
R.id.switchCompatibilityEnabled);
|
||||
switchCompatibilityEnabled.setOnCheckedChangeListener(compat_mode);
|
||||
|
||||
mKey = new mapKeyCode(parentActivity);
|
||||
mKey = new mapKeyCode(getActivity());
|
||||
|
||||
ImageView a_button_icon = (ImageView) getView().findViewById(
|
||||
R.id.a_button_icon);
|
||||
|
@ -350,7 +344,7 @@ public class InputModFragment extends Fragment {
|
|||
Spinner player_spnr = (Spinner) getView().findViewById(
|
||||
R.id.player_spinner);
|
||||
ArrayAdapter<String> playerAdapter = new ArrayAdapter<String>(
|
||||
parentActivity, android.R.layout.simple_spinner_item,
|
||||
getActivity(), android.R.layout.simple_spinner_item,
|
||||
controllers);
|
||||
playerAdapter
|
||||
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
|
@ -392,7 +386,7 @@ public class InputModFragment extends Fragment {
|
|||
System.gc();
|
||||
}
|
||||
try {
|
||||
InputStream bitmap = parentActivity.getAssets().open("buttons.png");
|
||||
InputStream bitmap = getResources().getAssets().open("buttons.png");
|
||||
BitmapFactory.Options options = new BitmapFactory.Options();
|
||||
options.inSampleSize = sS;
|
||||
Bitmap image = BitmapFactory.decodeStream(bitmap, null, options);
|
||||
|
@ -425,7 +419,7 @@ public class InputModFragment extends Fragment {
|
|||
}
|
||||
}
|
||||
}
|
||||
return parentActivity.getResources().getDrawable(R.drawable.input);
|
||||
return getResources().getDrawable(R.drawable.input);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -433,19 +427,17 @@ public class InputModFragment extends Fragment {
|
|||
*
|
||||
*/
|
||||
private void selectController() {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
|
||||
builder.setTitle(getString(R.string.select_controller_title));
|
||||
builder.setMessage(getString(R.string.select_controller_message,
|
||||
String.valueOf(player.replace("_", ""))));
|
||||
builder.setNegativeButton("Cancel",
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
builder.setTitle(R.string.select_controller_title);
|
||||
builder.setMessage(getString(R.string.select_controller_message, player.replace("_", "")));
|
||||
builder.setNegativeButton(R.string.cancel,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
builder.setOnKeyListener(new Dialog.OnKeyListener() {
|
||||
public boolean onKey(DialogInterface dialog, int keyCode,
|
||||
KeyEvent event) {
|
||||
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
|
||||
mPrefs.edit()
|
||||
.putInt("controller" + player, event.getDeviceId())
|
||||
.commit();
|
||||
|
@ -478,12 +470,10 @@ public class InputModFragment extends Fragment {
|
|||
this.button = button;
|
||||
this.output = output;
|
||||
isMapping = true;
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(
|
||||
parentActivity);
|
||||
builder.setTitle(getString(R.string.map_keycode_title));
|
||||
builder.setMessage(getString(R.string.map_keycode_message,
|
||||
button.replace("_", " ")));
|
||||
builder.setNegativeButton("Cancel",
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
builder.setTitle(R.string.map_keycode_title);
|
||||
builder.setMessage(getString(R.string.map_keycode_message, button.replace("_", " ")));
|
||||
builder.setNegativeButton(R.string.cancel,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
isMapping = false;
|
||||
|
@ -491,8 +481,7 @@ public class InputModFragment extends Fragment {
|
|||
}
|
||||
});
|
||||
builder.setOnKeyListener(new Dialog.OnKeyListener() {
|
||||
public boolean onKey(DialogInterface dialog, int keyCode,
|
||||
KeyEvent event) {
|
||||
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
|
||||
mapButton(keyCode, event);
|
||||
isMapping = false;
|
||||
dialog.dismiss();
|
||||
|
@ -512,7 +501,7 @@ public class InputModFragment extends Fragment {
|
|||
* The keyevent generated by the button being assigned
|
||||
*/
|
||||
private int mapButton(int keyCode, KeyEvent event) {
|
||||
if (android.os.Build.MODEL.startsWith("R800")) {
|
||||
if (Build.MODEL.startsWith("R800")) {
|
||||
if (keyCode == KeyEvent.KEYCODE_MENU)
|
||||
return -1;
|
||||
} else {
|
||||
|
@ -557,8 +546,8 @@ public class InputModFragment extends Fragment {
|
|||
if (label.contains(":")) {
|
||||
label = label.substring(0, label.indexOf(":"));
|
||||
}
|
||||
output.setText(label + ": "
|
||||
+ String.valueOf(ev.getAction()));
|
||||
|
||||
output.setText(label + ": " + ev.getAction());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -594,7 +583,7 @@ public class InputModFragment extends Fragment {
|
|||
if (label.contains(":")) {
|
||||
label = label.substring(0, label.indexOf(":"));
|
||||
}
|
||||
output.setText(label + ": " + String.valueOf(keyCode));
|
||||
output.setText(label + ": " + keyCode);
|
||||
return true;
|
||||
} else {
|
||||
String label = output.getText().toString();
|
||||
|
|
|
@ -21,11 +21,9 @@ import com.reicast.emulator.R;
|
|||
|
||||
public class OptionsFragment extends Fragment {
|
||||
|
||||
Activity parentActivity;
|
||||
Button mainBrowse;
|
||||
Button gameBrowse;
|
||||
Button mainLocale;
|
||||
OnClickListener mCallback;
|
||||
private Button mainBrowse;
|
||||
private Button gameBrowse;
|
||||
private OnClickListener mCallback;
|
||||
|
||||
private SharedPreferences mPrefs;
|
||||
private File sdcard = Environment.getExternalStorageDirectory();
|
||||
|
@ -62,9 +60,7 @@ public class OptionsFragment extends Fragment {
|
|||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
// setContentView(R.layout.activity_main);
|
||||
|
||||
parentActivity = getActivity();
|
||||
|
||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity);
|
||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||
home_directory = mPrefs.getString("home_directory", home_directory);
|
||||
|
||||
mainBrowse = (Button) getView().findViewById(R.id.browse_main_path);
|
||||
|
@ -89,7 +85,7 @@ public class OptionsFragment extends Fragment {
|
|||
home_directory = editBrowse.getText().toString();
|
||||
if (home_directory.endsWith("/data")) {
|
||||
home_directory.replace("/data", "");
|
||||
Toast.makeText(parentActivity, R.string.data_folder,
|
||||
Toast.makeText(getActivity(), R.string.data_folder,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
mPrefs.edit().putString("home_directory", home_directory)
|
||||
|
@ -97,12 +93,10 @@ public class OptionsFragment extends Fragment {
|
|||
}
|
||||
}
|
||||
|
||||
public void beforeTextChanged(CharSequence s, int start, int count,
|
||||
int after) {
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
|
||||
public void onTextChanged(CharSequence s, int start, int before,
|
||||
int count) {
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -132,14 +126,11 @@ public class OptionsFragment extends Fragment {
|
|||
}
|
||||
}
|
||||
|
||||
public void beforeTextChanged(CharSequence s, int start, int count,
|
||||
int after) {
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
|
||||
public void onTextChanged(CharSequence s, int start, int before,
|
||||
int count) {
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,249 +0,0 @@
|
|||
/* ====================================================================
|
||||
* Copyright (c) 2012-2013 Lounge Katt Entertainment. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this
|
||||
* software must display the following acknowledgment:
|
||||
* "This product includes software developed by Lounge Katt" unless
|
||||
* otherwise displayed by public repository entries.
|
||||
*
|
||||
* 4. The names "Lounge Katt", "TwistedUmbrella", and "LiveLog"
|
||||
* must not be used to endorse or promote products derived from this
|
||||
* software without prior written permission. For written permission,
|
||||
* please contact admin@loungekatt.com.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "LiveLog"
|
||||
* nor may "LiveLog" appear in their names without prior written
|
||||
* permission of Lounge Katt Entertainment.
|
||||
*
|
||||
* 6. Redistributions of any form whatsoever must retain the following
|
||||
* acknowledgment:
|
||||
* "This product includes software developed by Lounge Katt" unless
|
||||
* otherwise displayed by tagged repository entries.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY Lounge Katt ``AS IS'' AND ANY
|
||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* The license and distribution terms for any publicly available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution license
|
||||
* [including the GNU Public License.] Content not subject to these terms is
|
||||
* subject to to the terms and conditions of the Apache License, Version 2.0.
|
||||
*/
|
||||
|
||||
package com.reicast.emulator.debug;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Build;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.webkit.CookieManager;
|
||||
import android.webkit.CookieSyncManager;
|
||||
import android.webkit.WebSettings;
|
||||
import android.webkit.WebSettings.PluginState;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
||||
import com.nostra13.universalimageloader.core.ImageLoader;
|
||||
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
|
||||
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
|
||||
import com.reicast.emulator.MainActivity;
|
||||
import com.reicast.emulator.R;
|
||||
|
||||
public class GitAdapter extends BaseAdapter {
|
||||
|
||||
private static Activity activity;
|
||||
private ArrayList<HashMap<String, String>> data;
|
||||
private LayoutInflater inflater = null;
|
||||
private DisplayImageOptions options;
|
||||
|
||||
public GitAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
|
||||
this.activity = a;
|
||||
this.data = d;
|
||||
this.inflater = (LayoutInflater) activity
|
||||
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
ImageLoaderConfiguration configicon = new ImageLoaderConfiguration.Builder(
|
||||
activity).memoryCacheExtraOptions(96, 96).build();
|
||||
this.options = new DisplayImageOptions.Builder()
|
||||
.showStubImage(R.drawable.ic_github)
|
||||
.showImageForEmptyUri(R.drawable.ic_github)
|
||||
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED).build();
|
||||
|
||||
ImageLoader.getInstance().init(configicon);
|
||||
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
return this.data.size();
|
||||
}
|
||||
|
||||
public Object getItem(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
public View getView(final int position, View convertView, ViewGroup parent) {
|
||||
View vi = convertView;
|
||||
if (convertView == null)
|
||||
vi = this.inflater.inflate(R.layout.change_item, null);
|
||||
TextView dateText = (TextView) vi.findViewById(R.id.date);
|
||||
TextView committerText = (TextView) vi.findViewById(R.id.committer);
|
||||
TextView titleText = (TextView) vi.findViewById(R.id.title);
|
||||
ImageView avatarIcon = (ImageView) vi.findViewById(R.id.avatar);
|
||||
|
||||
final HashMap<String, String> commit = this.data.get(position);
|
||||
final String date = commit.get("Date");
|
||||
final String committer = commit.get("Committer");
|
||||
final String title = commit.get("Title");
|
||||
final String message = commit.get("Message");
|
||||
final String sha = commit.get("Sha");
|
||||
final String url = commit.get("Url");
|
||||
final String author = commit.get("Author");
|
||||
final String avatar = commit.get("Avatar");
|
||||
final String current = commit.get("Build");
|
||||
|
||||
RelativeLayout item = (RelativeLayout) vi.findViewById(R.id.change);
|
||||
if (current != null && !current.equals("") && current.equals(sha)) {
|
||||
item.getBackground().setColorFilter(0xFF00FF00,
|
||||
PorterDuff.Mode.MULTIPLY);
|
||||
} else {
|
||||
item.getBackground().setColorFilter(null);
|
||||
}
|
||||
|
||||
dateText.setText(date);
|
||||
committerText.setText(committer);
|
||||
titleText.setText(title);
|
||||
ImageLoader.getInstance()
|
||||
.displayImage(avatar, avatarIcon, this.options);
|
||||
|
||||
vi.setOnClickListener(new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
System.gc();
|
||||
String output = message + "\n\n" + " - " + author;
|
||||
displayCommit(sha, output, url, v.getContext());
|
||||
}
|
||||
});
|
||||
// Handle clicking individual item from list
|
||||
|
||||
return vi;
|
||||
}
|
||||
|
||||
private static void callGithubVerification(String sha) {
|
||||
String hash = sha.substring(0, 7);
|
||||
Intent github = new Intent("com.reicast.emulator.debug.GitHash");
|
||||
github.setAction("reicast.emulator.GITHUB");
|
||||
github.putExtra("hashtag", hash);
|
||||
activity.startActivity(github);
|
||||
}
|
||||
|
||||
public static void displayCommit(final String title, String message, String url,
|
||||
Context context) {
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setCancelable(true);
|
||||
builder.setTitle(title);
|
||||
builder.setMessage(message);
|
||||
LayoutInflater infalter = LayoutInflater.from(context);
|
||||
final View popWebView = infalter.inflate(R.layout.webview, null);
|
||||
WebView mWebView = (WebView) popWebView.findViewById(R.id.webframe);
|
||||
mWebView = configureWebview(url, context, mWebView);
|
||||
builder.setView(popWebView);
|
||||
builder.setPositiveButton("Close",
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
return;
|
||||
}
|
||||
});
|
||||
if (MainActivity.debugUser) {
|
||||
builder.setNegativeButton("Download",
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
callGithubVerification(title);
|
||||
dialog.dismiss();
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
builder.create().show();
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
@SuppressWarnings("deprecation")
|
||||
public static WebView configureWebview(String url, Context context,
|
||||
WebView mWebView) {
|
||||
mWebView.getSettings().setSupportZoom(true);
|
||||
mWebView.getSettings().setBuiltInZoomControls(true);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
mWebView.getSettings().setDisplayZoomControls(false);
|
||||
}
|
||||
mWebView.setInitialScale(1);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) {
|
||||
mWebView.getSettings().setUseWideViewPort(true);
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR_MR1) {
|
||||
mWebView.getSettings().setLoadWithOverviewMode(true);
|
||||
}
|
||||
mWebView.getSettings().setJavaScriptEnabled(true);
|
||||
mWebView.getSettings().setPluginState(PluginState.ON);
|
||||
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
|
||||
mWebView.clearHistory();
|
||||
mWebView.clearFormData();
|
||||
mWebView.clearCache(true);
|
||||
CookieSyncManager.createInstance(context);
|
||||
CookieManager cookieManager = CookieManager.getInstance();
|
||||
cookieManager.removeAllCookie();
|
||||
CookieSyncManager.getInstance().stopSync();
|
||||
mWebView.setWebViewClient(new WebViewClient() {
|
||||
@Override
|
||||
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
||||
view.loadUrl(url);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
mWebView.loadUrl(url);
|
||||
return mWebView;
|
||||
}
|
||||
}
|
|
@ -7,7 +7,6 @@ import javax.microedition.khronos.egl.EGLConfig;
|
|||
import javax.microedition.khronos.opengles.GL10;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
|
@ -60,6 +59,9 @@ public class GL2JNIView extends GLSurfaceView
|
|||
{
|
||||
public static final boolean DEBUG = false;
|
||||
|
||||
public static final int LAYER_TYPE_SOFTWARE = 1;
|
||||
public static final int LAYER_TYPE_HARDWARE = 2;
|
||||
|
||||
private static String fileName;
|
||||
//private AudioThread audioThread;
|
||||
private EmuThread ethd;
|
||||
|
@ -148,7 +150,7 @@ public class GL2JNIView extends GLSurfaceView
|
|||
|
||||
touchVibrationEnabled = prefs.getBoolean(Config.pref_touchvibe, true);
|
||||
|
||||
int renderType = prefs.getInt(Config.pref_renderdepth, LAYER_TYPE_HARDWARE);
|
||||
int renderType = prefs.getInt(Config.pref_rendertype, LAYER_TYPE_HARDWARE);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
this.setLayerType(renderType, null);
|
||||
} else {
|
||||
|
|
|
@ -1,53 +1,53 @@
|
|||
package com.reicast.emulator.emu;
|
||||
|
||||
|
||||
public class JNIdc
|
||||
public final class JNIdc
|
||||
{
|
||||
static { System.loadLibrary("dc"); }
|
||||
static { System.loadLibrary("dc"); }
|
||||
|
||||
public static native void config(String dirName);
|
||||
public static native void init(String fileName);
|
||||
public static native void run(Object track);
|
||||
public static native void stop();
|
||||
public static native void config(String dirName);
|
||||
public static native void init(String fileName);
|
||||
public static native void run(Object track);
|
||||
public static native void stop();
|
||||
|
||||
public static native int send(int cmd, int opt);
|
||||
public static native int data(int cmd, byte[] data);
|
||||
public static native int send(int cmd, int opt);
|
||||
public static native int data(int cmd, byte[] data);
|
||||
|
||||
public static native void rendinit(int w, int y);
|
||||
public static native void rendframe();
|
||||
public static native void rendinit(int w, int y);
|
||||
public static native void rendframe();
|
||||
|
||||
public static native void kcode(int[] kcode, int[] lt, int[] rt, int[] jx, int[] jy);
|
||||
public static native void kcode(int[] kcode, int[] lt, int[] rt, int[] jx, int[] jy);
|
||||
|
||||
public static native void vjoy(int id,float x, float y, float w, float h);
|
||||
//public static native int play(short result[],int size);
|
||||
public static native void vjoy(int id,float x, float y, float w, float h);
|
||||
//public static native int play(short result[],int size);
|
||||
|
||||
public static native void initControllers(boolean[] controllers);
|
||||
public static native void initControllers(boolean[] controllers);
|
||||
|
||||
public static native void setupMic(Object sip);
|
||||
public static native void vmuSwap();
|
||||
public static native void setupVmu(Object sip);
|
||||
public static native void dynarec(int dynarec);
|
||||
public static native void idleskip(int idleskip);
|
||||
public static native void unstable(int unstable);
|
||||
public static native void cable(int cable);
|
||||
public static native void region(int region);
|
||||
public static native void broadcast(int broadcast);
|
||||
public static native void limitfps(int limiter);
|
||||
public static native void nobatch(int nobatch);
|
||||
public static native void nosound(int noaudio);
|
||||
public static native void mipmaps(int mipmaps);
|
||||
public static native void widescreen(int stretch);
|
||||
public static native void subdivide(int subdivide);
|
||||
public static native void frameskip(int frames);
|
||||
public static native void pvrrender(int render);
|
||||
public static native void cheatdisk(String disk);
|
||||
public static native void dreamtime(long clock);
|
||||
public static native void setupMic(Object sip);
|
||||
public static native void vmuSwap();
|
||||
public static native void setupVmu(Object sip);
|
||||
public static native void dynarec(int dynarec);
|
||||
public static native void idleskip(int idleskip);
|
||||
public static native void unstable(int unstable);
|
||||
public static native void cable(int cable);
|
||||
public static native void region(int region);
|
||||
public static native void broadcast(int broadcast);
|
||||
public static native void limitfps(int limiter);
|
||||
public static native void nobatch(int nobatch);
|
||||
public static native void nosound(int noaudio);
|
||||
public static native void mipmaps(int mipmaps);
|
||||
public static native void widescreen(int stretch);
|
||||
public static native void subdivide(int subdivide);
|
||||
public static native void frameskip(int frames);
|
||||
public static native void pvrrender(int render);
|
||||
public static native void cheatdisk(String disk);
|
||||
public static native void dreamtime(long clock);
|
||||
|
||||
public static void show_osd() {
|
||||
JNIdc.vjoy(13, 1,0,0,0);
|
||||
}
|
||||
public static void show_osd() {
|
||||
JNIdc.vjoy(13, 1,0,0,0);
|
||||
}
|
||||
|
||||
public static void hide_osd() {
|
||||
JNIdc.vjoy(13, 0,0,0,0);
|
||||
}
|
||||
public static void hide_osd() {
|
||||
JNIdc.vjoy(13, 0,0,0,0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -73,100 +73,100 @@ public class Gamepad {
|
|||
|
||||
public static final int Xperia_Touchpad = 1048584;
|
||||
|
||||
public static final int key_CONT_B = 0x0002;
|
||||
public static final int key_CONT_A = 0x0004;
|
||||
public static final int key_CONT_START = 0x0008;
|
||||
public static final int key_CONT_DPAD_UP = 0x0010;
|
||||
public static final int key_CONT_DPAD_DOWN = 0x0020;
|
||||
public static final int key_CONT_DPAD_LEFT = 0x0040;
|
||||
public static final int key_CONT_B = 0x0002;
|
||||
public static final int key_CONT_A = 0x0004;
|
||||
public static final int key_CONT_START = 0x0008;
|
||||
public static final int key_CONT_DPAD_UP = 0x0010;
|
||||
public static final int key_CONT_DPAD_DOWN = 0x0020;
|
||||
public static final int key_CONT_DPAD_LEFT = 0x0040;
|
||||
public static final int key_CONT_DPAD_RIGHT = 0x0080;
|
||||
public static final int key_CONT_Y = 0x0200;
|
||||
public static final int key_CONT_X = 0x0400;
|
||||
public static final int key_CONT_Y = 0x0200;
|
||||
public static final int key_CONT_X = 0x0400;
|
||||
|
||||
public int[] getConsoleController() {
|
||||
return new int[] {
|
||||
OuyaController.BUTTON_O, key_CONT_A,
|
||||
OuyaController.BUTTON_A, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
OuyaController.BUTTON_O, key_CONT_A,
|
||||
OuyaController.BUTTON_A, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
|
||||
getStartButtonCode(), key_CONT_START,
|
||||
getSelectButtonCode(), getSelectButtonCode()
|
||||
getStartButtonCode(), key_CONT_START,
|
||||
getSelectButtonCode(), getSelectButtonCode()
|
||||
// Redundant, but verifies it is mapped properly
|
||||
};
|
||||
}
|
||||
|
||||
public int[] getXPlayController() {
|
||||
return new int[] {
|
||||
KeyEvent.KEYCODE_DPAD_CENTER, key_CONT_A,
|
||||
KeyEvent.KEYCODE_BACK, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
KeyEvent.KEYCODE_DPAD_CENTER, key_CONT_A,
|
||||
KeyEvent.KEYCODE_BACK, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
|
||||
getStartButtonCode(), key_CONT_START,
|
||||
getSelectButtonCode(), getSelectButtonCode()
|
||||
getStartButtonCode(), key_CONT_START,
|
||||
getSelectButtonCode(), getSelectButtonCode()
|
||||
// Redundant, but verifies it is mapped properly
|
||||
};
|
||||
}
|
||||
|
||||
public int[] getOUYAController() {
|
||||
return new int[] {
|
||||
OuyaController.BUTTON_O, key_CONT_A,
|
||||
OuyaController.BUTTON_A, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
OuyaController.BUTTON_O, key_CONT_A,
|
||||
OuyaController.BUTTON_A, key_CONT_B,
|
||||
OuyaController.BUTTON_U, key_CONT_X,
|
||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
|
||||
getStartButtonCode(), key_CONT_START,
|
||||
OuyaController.BUTTON_R3, key_CONT_START
|
||||
getStartButtonCode(), key_CONT_START,
|
||||
OuyaController.BUTTON_R3, key_CONT_START
|
||||
};
|
||||
}
|
||||
|
||||
public int[] getMogaController() {
|
||||
return new int[] {
|
||||
KeyEvent.KEYCODE_BUTTON_A, key_CONT_A,
|
||||
KeyEvent.KEYCODE_BUTTON_B, key_CONT_B,
|
||||
KeyEvent.KEYCODE_BUTTON_X, key_CONT_X,
|
||||
KeyEvent.KEYCODE_BUTTON_Y, key_CONT_Y,
|
||||
KeyEvent.KEYCODE_BUTTON_A, key_CONT_A,
|
||||
KeyEvent.KEYCODE_BUTTON_B, key_CONT_B,
|
||||
KeyEvent.KEYCODE_BUTTON_X, key_CONT_X,
|
||||
KeyEvent.KEYCODE_BUTTON_Y, key_CONT_Y,
|
||||
|
||||
KeyEvent.KEYCODE_DPAD_UP, key_CONT_DPAD_UP,
|
||||
KeyEvent.KEYCODE_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
KeyEvent.KEYCODE_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
KeyEvent.KEYCODE_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
KeyEvent.KEYCODE_DPAD_UP, key_CONT_DPAD_UP,
|
||||
KeyEvent.KEYCODE_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||
KeyEvent.KEYCODE_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||
KeyEvent.KEYCODE_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||
|
||||
getStartButtonCode(), key_CONT_START,
|
||||
getSelectButtonCode(), getSelectButtonCode()
|
||||
getStartButtonCode(), key_CONT_START,
|
||||
getSelectButtonCode(), getSelectButtonCode()
|
||||
};
|
||||
}
|
||||
|
||||
public int[] setModifiedKeys(String id, int playerNum, SharedPreferences mPrefs) {
|
||||
return new int[] {
|
||||
mPrefs.getInt(pref_button_a + id, OuyaController.BUTTON_O), key_CONT_A,
|
||||
mPrefs.getInt(pref_button_b + id, OuyaController.BUTTON_A), key_CONT_B,
|
||||
mPrefs.getInt(pref_button_x + id, OuyaController.BUTTON_U), key_CONT_X,
|
||||
mPrefs.getInt(pref_button_y + id, OuyaController.BUTTON_Y), key_CONT_Y,
|
||||
mPrefs.getInt(pref_button_a + id, OuyaController.BUTTON_O), key_CONT_A,
|
||||
mPrefs.getInt(pref_button_b + id, OuyaController.BUTTON_A), key_CONT_B,
|
||||
mPrefs.getInt(pref_button_x + id, OuyaController.BUTTON_U), key_CONT_X,
|
||||
mPrefs.getInt(pref_button_y + id, OuyaController.BUTTON_Y), key_CONT_Y,
|
||||
|
||||
mPrefs.getInt(pref_dpad_up + id, OuyaController.BUTTON_DPAD_UP), key_CONT_DPAD_UP,
|
||||
mPrefs.getInt(pref_dpad_down + id, OuyaController.BUTTON_DPAD_DOWN), key_CONT_DPAD_DOWN,
|
||||
mPrefs.getInt(pref_dpad_left + id, OuyaController.BUTTON_DPAD_LEFT), key_CONT_DPAD_LEFT,
|
||||
mPrefs.getInt(pref_dpad_right + id, OuyaController.BUTTON_DPAD_RIGHT), key_CONT_DPAD_RIGHT,
|
||||
mPrefs.getInt(pref_dpad_up + id, OuyaController.BUTTON_DPAD_UP), key_CONT_DPAD_UP,
|
||||
mPrefs.getInt(pref_dpad_down + id, OuyaController.BUTTON_DPAD_DOWN), key_CONT_DPAD_DOWN,
|
||||
mPrefs.getInt(pref_dpad_left + id, OuyaController.BUTTON_DPAD_LEFT), key_CONT_DPAD_LEFT,
|
||||
mPrefs.getInt(pref_dpad_right + id, OuyaController.BUTTON_DPAD_RIGHT), key_CONT_DPAD_RIGHT,
|
||||
|
||||
mPrefs.getInt(pref_button_start + id, getStartButtonCode()), key_CONT_START,
|
||||
mPrefs.getInt(pref_button_select + id, getSelectButtonCode()), getSelectButtonCode()
|
||||
mPrefs.getInt(pref_button_start + id, getStartButtonCode()), key_CONT_START,
|
||||
mPrefs.getInt(pref_button_select + id, getSelectButtonCode()), getSelectButtonCode()
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@ import android.os.Build;
|
|||
import android.os.Handler;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.bda.controller.Controller;
|
||||
import com.bda.controller.ControllerListener;
|
||||
|
@ -19,14 +18,13 @@ import com.bda.controller.KeyEvent;
|
|||
import com.bda.controller.MotionEvent;
|
||||
import com.bda.controller.StateEvent;
|
||||
import com.reicast.emulator.R;
|
||||
import com.reicast.emulator.emu.JNIdc;
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
/*
|
||||
|
||||
*/
|
||||
public class MOGAInput
|
||||
public final class MOGAInput
|
||||
{
|
||||
private SharedPreferences prefs;
|
||||
|
||||
|
@ -41,7 +39,8 @@ public class MOGAInput
|
|||
private String notify;
|
||||
private Gamepad pad;
|
||||
|
||||
Activity act;
|
||||
private Activity act;
|
||||
|
||||
public MOGAInput()
|
||||
{
|
||||
/*
|
||||
|
@ -181,19 +180,19 @@ public class MOGAInput
|
|||
}
|
||||
|
||||
if (event.getState() == StateEvent.STATE_CONNECTION && event.getAction() == ACTION_CONNECTED) {
|
||||
int mControllerVersion = mController.getState(Controller.STATE_CURRENT_PRODUCT_VERSION);
|
||||
if (mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) {
|
||||
pad.isMogaPro[playerNum] = true;
|
||||
pad.isActiveMoga[playerNum] = true;
|
||||
Log.d("com.reicast.emulator", act.getApplicationContext().getString(R.string.moga_pro_connect));
|
||||
} else if (mControllerVersion == Controller.ACTION_VERSION_MOGA) {
|
||||
pad.isMogaPro[playerNum] = false;
|
||||
pad.isActiveMoga[playerNum] = true;
|
||||
Log.d("com.reicast.emulator", act.getApplicationContext().getString(R.string.moga_connect));
|
||||
}
|
||||
if (pad.isActiveMoga[playerNum]) {
|
||||
notifyMogaConnected(notify, playerNum);
|
||||
}
|
||||
int mControllerVersion = mController.getState(Controller.STATE_CURRENT_PRODUCT_VERSION);
|
||||
if (mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) {
|
||||
pad.isMogaPro[playerNum] = true;
|
||||
pad.isActiveMoga[playerNum] = true;
|
||||
Log.d("com.reicast.emulator", act.getString(R.string.moga_pro_connect));
|
||||
} else if (mControllerVersion == Controller.ACTION_VERSION_MOGA) {
|
||||
pad.isMogaPro[playerNum] = false;
|
||||
pad.isActiveMoga[playerNum] = true;
|
||||
Log.d("com.reicast.emulator", act.getString(R.string.moga_connect));
|
||||
}
|
||||
if (pad.isActiveMoga[playerNum]) {
|
||||
notifyMogaConnected(notify, playerNum);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -105,30 +105,30 @@ public class VJoy {
|
|||
}
|
||||
|
||||
public static void resetCustomVjoyValues(Context context) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
|
||||
prefs.edit().remove("touch_x_shift_dpad").commit();
|
||||
prefs.edit().remove("touch_y_shift_dpad").commit();
|
||||
prefs.edit().remove("touch_scale_dpad").commit();
|
||||
prefs.edit().remove("touch_x_shift_dpad").commit();
|
||||
prefs.edit().remove("touch_y_shift_dpad").commit();
|
||||
prefs.edit().remove("touch_scale_dpad").commit();
|
||||
|
||||
prefs.edit().remove("touch_x_shift_buttons").commit();
|
||||
prefs.edit().remove("touch_y_shift_buttons").commit();
|
||||
prefs.edit().remove("touch_scale_buttons").commit();
|
||||
prefs.edit().remove("touch_x_shift_buttons").commit();
|
||||
prefs.edit().remove("touch_y_shift_buttons").commit();
|
||||
prefs.edit().remove("touch_scale_buttons").commit();
|
||||
|
||||
prefs.edit().remove("touch_x_shift_start").commit();
|
||||
prefs.edit().remove("touch_y_shift_start").commit();
|
||||
prefs.edit().remove("touch_scale_start").commit();
|
||||
prefs.edit().remove("touch_x_shift_start").commit();
|
||||
prefs.edit().remove("touch_y_shift_start").commit();
|
||||
prefs.edit().remove("touch_scale_start").commit();
|
||||
|
||||
prefs.edit().remove("touch_x_shift_left_trigger").commit();
|
||||
prefs.edit().remove("touch_y_shift_left_trigger").commit();
|
||||
prefs.edit().remove("touch_scale_left_trigger").commit();
|
||||
prefs.edit().remove("touch_x_shift_left_trigger").commit();
|
||||
prefs.edit().remove("touch_y_shift_left_trigger").commit();
|
||||
prefs.edit().remove("touch_scale_left_trigger").commit();
|
||||
|
||||
prefs.edit().remove("touch_x_shift_right_trigger").commit();
|
||||
prefs.edit().remove("touch_y_shift_right_trigger").commit();
|
||||
prefs.edit().remove("touch_scale_right_trigger").commit();
|
||||
prefs.edit().remove("touch_x_shift_right_trigger").commit();
|
||||
prefs.edit().remove("touch_y_shift_right_trigger").commit();
|
||||
prefs.edit().remove("touch_scale_right_trigger").commit();
|
||||
|
||||
prefs.edit().remove("touch_x_shift_analog").commit();
|
||||
prefs.edit().remove("touch_y_shift_analog").commit();
|
||||
prefs.edit().remove("touch_scale_analog").commit();
|
||||
}
|
||||
prefs.edit().remove("touch_x_shift_analog").commit();
|
||||
prefs.edit().remove("touch_y_shift_analog").commit();
|
||||
prefs.edit().remove("touch_scale_analog").commit();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="src" path="gen"/>
|
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||
<classpathentry kind="output" path="bin/classes"/>
|
||||
</classpath>
|
|
@ -1,33 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>ReicastDebug</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -1,4 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
|
@ -1,57 +0,0 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.reicast.emulator.debug"
|
||||
android:sharedUserId="android.uid.reicast"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0" >
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="8"
|
||||
android:targetSdkVersion="18" />
|
||||
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.READ_LOGS" />
|
||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
|
||||
<permission
|
||||
android:name="com.reicast.emulator.debug.permission.C2D_MESSAGE"
|
||||
android:protectionLevel="signature" />
|
||||
<uses-permission android:name="com.reicast.emulator.debug.permission.C2D_MESSAGE" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/app_name">
|
||||
<activity android:name=".Debug"
|
||||
android:excludeFromRecents="true"
|
||||
android:theme="@style/Theme.PanelTheme" >
|
||||
<intent-filter>
|
||||
<action android:name="reicast.emulator.DEBUG" />
|
||||
<action android:name="reicast.emulator.NOTIFY" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".GitHash"
|
||||
android:excludeFromRecents="true"
|
||||
android:theme="@style/Theme.PanelTheme" >
|
||||
<intent-filter>
|
||||
<action android:name="reicast.emulator.GITHUB" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<receiver
|
||||
android:name=".GcmBroadcastReceiver"
|
||||
android:permission="com.google.android.c2dm.permission.SEND" >
|
||||
<intent-filter>
|
||||
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
|
||||
|
||||
<category android:name="com.reicast.emulator.debug" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
</application>
|
||||
|
||||
</manifest>
|
|
@ -1,95 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="reicast-debug" default="help">
|
||||
|
||||
<!-- The local.properties file is created and updated by the 'android' tool.
|
||||
It contains the path to the SDK. It should *NOT* be checked into
|
||||
Version Control Systems. -->
|
||||
<property file="local.properties" />
|
||||
|
||||
<!-- The ant.properties file can be created by you. It is only edited by the
|
||||
'android' tool to add properties to it.
|
||||
This is the place to change some Ant specific build properties.
|
||||
Here are some properties you may want to change/update:
|
||||
|
||||
source.dir
|
||||
The name of the source directory. Default is 'src'.
|
||||
out.dir
|
||||
The name of the output directory. Default is 'bin'.
|
||||
|
||||
For other overridable properties, look at the beginning of the rules
|
||||
files in the SDK, at tools/ant/build.xml
|
||||
|
||||
Properties related to the SDK location or the project target should
|
||||
be updated using the 'android' tool with the 'update' action.
|
||||
|
||||
This file is an integral part of the build system for your
|
||||
application and should be checked into Version Control Systems.
|
||||
|
||||
-->
|
||||
<property file="ant.properties" />
|
||||
|
||||
<!-- if sdk.dir was not set from one of the property file, then
|
||||
get it from the ANDROID_HOME env var.
|
||||
This must be done before we load project.properties since
|
||||
the proguard config can use sdk.dir -->
|
||||
<property environment="env" />
|
||||
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
|
||||
<isset property="env.ANDROID_HOME" />
|
||||
</condition>
|
||||
<condition property="ndk.dir" value="${env.ANDROID_NDK}">
|
||||
<isset property="env.ANDROID_NDK" />
|
||||
</condition>
|
||||
|
||||
<!-- The project.properties file is created and updated by the 'android'
|
||||
tool, as well as ADT.
|
||||
|
||||
This contains project specific properties such as project target, and library
|
||||
dependencies. Lower level build properties are stored in ant.properties
|
||||
(or in .classpath for Eclipse projects).
|
||||
|
||||
This file is an integral part of the build system for your
|
||||
application and should be checked into Version Control Systems. -->
|
||||
<loadproperties srcFile="project.properties" />
|
||||
|
||||
<!-- quick check on sdk.dir -->
|
||||
<fail
|
||||
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
|
||||
unless="sdk.dir"
|
||||
/>
|
||||
|
||||
<!--
|
||||
Import per project custom build rules if present at the root of the project.
|
||||
This is the place to put custom intermediary targets such as:
|
||||
-pre-build
|
||||
-pre-compile
|
||||
-post-compile (This is typically used for code obfuscation.
|
||||
Compiled code location: ${out.classes.absolute.dir}
|
||||
If this is not done in place, override ${out.dex.input.absolute.dir})
|
||||
-post-package
|
||||
-post-build
|
||||
-pre-clean
|
||||
-->
|
||||
<import file="custom_rules.xml" optional="true" />
|
||||
|
||||
<!-- Import the actual build file.
|
||||
|
||||
To customize existing targets, there are two options:
|
||||
- Customize only one target:
|
||||
- copy/paste the target into this file, *before* the
|
||||
<import> task.
|
||||
- customize it to your needs.
|
||||
- Customize the whole content of build.xml
|
||||
- copy/paste the content of the rules files (minus the top node)
|
||||
into this file, replacing the <import> task.
|
||||
- customize to your needs.
|
||||
|
||||
***********************
|
||||
****** IMPORTANT ******
|
||||
***********************
|
||||
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
|
||||
in order to avoid having your file be overridden by tools such as "android update project"
|
||||
-->
|
||||
<!-- version-tag: 1 -->
|
||||
<import file="${sdk.dir}/tools/ant/build.xml" />
|
||||
|
||||
</project>
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="src" path="gen"/>
|
||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||
<classpathentry kind="output" path="bin/classes"/>
|
||||
</classpath>
|
|
@ -1,33 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>google-services</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -1,4 +0,0 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.google.android.gms"
|
||||
android:versionCode="3136110"
|
||||
android:versionName="3.1.36 (673201-10)" >
|
||||
|
||||
<uses-sdk android:minSdkVersion="8"/>
|
||||
|
||||
</manifest>
|
|
@ -1,14 +0,0 @@
|
|||
Library Project including Google Play services client jar.
|
||||
|
||||
This can be used by an Android project to use the API's provided
|
||||
by Google Play services.
|
||||
|
||||
There is technically no source, but the src folder is necessary
|
||||
to ensure that the build system works. The content is actually
|
||||
located in the libs/ directory.
|
||||
|
||||
|
||||
USAGE:
|
||||
|
||||
Make sure you import this Android library project into your IDE
|
||||
and set this project as a dependency.
|
|
@ -1,83 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="google-services" default="help">
|
||||
|
||||
<!-- The local.properties file is created and updated by the 'android' tool.
|
||||
It contains the path to the SDK. It should *NOT* be checked into
|
||||
Version Control Systems. -->
|
||||
<property file="local.properties" />
|
||||
|
||||
<!-- The ant.properties file can be created by you. It is only edited by the
|
||||
'android' tool to add properties to it.
|
||||
This is the place to change some Ant specific build properties.
|
||||
Here are some properties you may want to change/update:
|
||||
|
||||
source.dir
|
||||
The name of the source directory. Default is 'src'.
|
||||
out.dir
|
||||
The name of the output directory. Default is 'bin'.
|
||||
|
||||
For other overridable properties, look at the beginning of the rules
|
||||
files in the SDK, at tools/ant/build.xml
|
||||
|
||||
Properties related to the SDK location or the project target should
|
||||
be updated using the 'android' tool with the 'update' action.
|
||||
|
||||
This file is an integral part of the build system for your
|
||||
application and should be checked into Version Control Systems.
|
||||
|
||||
-->
|
||||
<property file="ant.properties" />
|
||||
|
||||
<!-- The project.properties file is created and updated by the 'android'
|
||||
tool, as well as ADT.
|
||||
|
||||
This contains project specific properties such as project target, and library
|
||||
dependencies. Lower level build properties are stored in ant.properties
|
||||
(or in .classpath for Eclipse projects).
|
||||
|
||||
This file is an integral part of the build system for your
|
||||
application and should be checked into Version Control Systems. -->
|
||||
<loadproperties srcFile="project.properties" />
|
||||
|
||||
<!-- quick check on sdk.dir -->
|
||||
<fail
|
||||
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
|
||||
unless="sdk.dir"
|
||||
/>
|
||||
|
||||
<!--
|
||||
Import per project custom build rules if present at the root of the project.
|
||||
This is the place to put custom intermediary targets such as:
|
||||
-pre-build
|
||||
-pre-compile
|
||||
-post-compile (This is typically used for code obfuscation.
|
||||
Compiled code location: ${out.classes.absolute.dir}
|
||||
If this is not done in place, override ${out.dex.input.absolute.dir})
|
||||
-post-package
|
||||
-post-build
|
||||
-pre-clean
|
||||
-->
|
||||
<import file="custom_rules.xml" optional="true" />
|
||||
|
||||
<!-- Import the actual build file.
|
||||
|
||||
To customize existing targets, there are two options:
|
||||
- Customize only one target:
|
||||
- copy/paste the target into this file, *before* the
|
||||
<import> task.
|
||||
- customize it to your needs.
|
||||
- Customize the whole content of build.xml
|
||||
- copy/paste the content of the rules files (minus the top node)
|
||||
into this file, replacing the <import> task.
|
||||
- customize to your needs.
|
||||
|
||||
***********************
|
||||
****** IMPORTANT ******
|
||||
***********************
|
||||
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
|
||||
in order to avoid having your file be overridden by tools such as "android update project"
|
||||
-->
|
||||
<!-- version-tag: 1 -->
|
||||
<import file="${sdk.dir}/tools/ant/build.xml" />
|
||||
|
||||
</project>
|
|
@ -1 +0,0 @@
|
|||
doc=../../../docs/reference
|
|
@ -1,15 +0,0 @@
|
|||
# This file is automatically generated by Android Tools.
|
||||
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
|
||||
#
|
||||
# This file must be checked in Version Control Systems.
|
||||
#
|
||||
# To customize properties used by the Ant build system edit
|
||||
# "ant.properties", and override values to adapt the script to your
|
||||
# project structure.
|
||||
#
|
||||
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
|
||||
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
|
||||
|
||||
# Project target.
|
||||
target=android-9
|
||||
android.library=true
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:state_pressed="true"
|
||||
android:color="@color/common_signin_btn_dark_text_pressed" />
|
||||
<item
|
||||
android:state_enabled="false"
|
||||
android:state_focused="true"
|
||||
android:color="@color/common_signin_btn_dark_text_disabled" />
|
||||
<item
|
||||
android:state_focused="true"
|
||||
android:color="@color/common_signin_btn_dark_text_focused" />
|
||||
<item
|
||||
android:state_enabled="false"
|
||||
android:color="@color/common_signin_btn_dark_text_disabled" />
|
||||
<item
|
||||
android:color="@color/common_signin_btn_dark_text_default" />
|
||||
</selector>
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:state_pressed="true"
|
||||
android:color="@color/common_signin_btn_light_text_pressed" />
|
||||
<item
|
||||
android:state_enabled="false"
|
||||
android:state_focused="true"
|
||||
android:color="@color/common_signin_btn_light_text_disabled" />
|
||||
<item
|
||||
android:state_focused="true"
|
||||
android:color="@color/common_signin_btn_light_text_focused" />
|
||||
<item
|
||||
android:state_enabled="false"
|
||||
android:color="@color/common_signin_btn_light_text_disabled" />
|
||||
<item
|
||||
android:color="@color/common_signin_btn_light_text_default" />
|
||||
</selector>
|
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.5 KiB |