BUILD GRADE
compile 'com.unity3d.ads:unity-ads:3.7.+'
compile 'cn.pedant.sweetalert:library:1.3'
compile 'com.sdsmdg.tastytoast:tastytoast:0.1.1'
//////////////////////
ANDROIDMANIESTO
<!--- Meta Data -->
<activity
android:name="com.unity3d.services.ads.adunit.AdUnitActivity"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:hardwareAccelerated="true"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<activity
android:name="com.unity3d.services.ads.adunit.AdUnitTransparentActivity"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:hardwareAccelerated="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
<activity
android:name="com.unity3d.services.ads.adunit.AdUnitTransparentSoftwareActivity"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:hardwareAccelerated="false"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
<activity
android:name="com.unity3d.services.ads.adunit.AdUnitSoftwareActivity"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:hardwareAccelerated="false"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
////////////////////////////
SOCKSHTTPACTIVITY OR MAINACTIVITY
/ads unity
import com.unity3d.ads.IUnityAdsInitializationListener;
import com.unity3d.ads.IUnityAdsLoadListener;
import com.unity3d.ads.IUnityAdsShowListener;
import com.unity3d.ads.UnityAds;
import com.unity3d.ads.UnityAdsShowOptions;
import com.unity3d.services.banners.BannerErrorInfo;
import com.unity3d.services.banners.BannerView;
import com.unity3d.services.banners.UnityBannerSize;
import com.unity3d.ads.IUnityAdsListener;
import cn.pedant.SweetAlert.SweetAlertDialog;
import android.os.CountDownTimer;
import com.jaxtunnel.phtunnel.service.SocksDNSService;
import java.util.concurrent.TimeUnit;
import java.util.Locale;
//end
/////////////////////////
public class MainActivity ir SocksHttpActivity
IUnityAdsInitializationListener
////////////////////////
//private unity ads
private String unityGameID = "4087375";
Boolean testMode = true;
private String bottomAdUnitId = "Banner_Android";
private String InterstitialadUnitId = "Interstitial_Android";
private String RewardadUnitId = "Rewarded_Android";
private UnityAds interstitialAds;
private Button mReward;
//end
////////////////////
//Under the deprive of unity
private BannerView.IListener bannerListener =
new BannerView.IListener() {
@Override
public void onBannerLoaded(BannerView bannerAdView) {
// Called when the banner is loaded.
Log.v("UnityAdsExample", "onBannerLoaded: " + bannerAdView.getPlacementId());
// Enable the correct button to hide the ad
}
@Override
public void onBannerFailedToLoad(
BannerView bannerAdView, BannerErrorInfo errorInfo) {
Log.e(
"UnityAdsExample",
"Unity Ads failed to load banner for "
+ bannerAdView.getPlacementId()
+ " with error: ["
+ errorInfo.errorCode
+ "] "
+ errorInfo.errorMessage);
// Note that the BannerErrorInfo object can indicate a no fill (see API
// documentation).
}
@Override
public void onBannerClick(BannerView bannerAdView) {
// Called when a banner is clicked.
Log.v("UnityAdsExample", "onBannerClick: " + bannerAdView.getPlacementId());
}
@Override
public void onBannerLeftApplication(BannerView bannerAdView) {
// Called when the banner links out of the application.
Log.v(
"UnityAdsExample",
"onBannerLeftApplication: " + bannerAdView.getPlacementId());
}
};
private IUnityAdsLoadListener loadListener =new IUnityAdsLoadListener() {
@Override
public void onUnityAdsAdLoaded(String placementId) {
UnityAds.show(MainActivity.this,RewardadUnitId,new UnityAdsShowOptions(),showListener);
//UnityAds.show(MainActivity.this,InterstitialadUnitId,new UnityAdsShowOptions(),showListener);
}
@Override
public void onUnityAdsFailedToLoad(
String placementId, UnityAds.UnityAdsLoadError error, String message) {
Log.e(
"UnityAdsExample",
"Unity Ads failed to load ad for "
+ placementId
+ " with error: ["
+ error
+ "] "
+ message);
}
};
private IUnityAdsShowListener showListener =
new IUnityAdsShowListener() {
private SweetAlertDialog pDialog;
@Override
public void onUnityAdsShowFailure(
String placementId, UnityAds.UnityAdsShowError error, String message) {
Log.e(
"UnityAdsExample",
"Unity Ads failed to show ad for "
+ placementId
+ " with error: ["
+ error
+ "] "
+ message);
SweetAlertDialog nops =
new SweetAlertDialog(
MainActivity.this, SweetAlertDialog.ERROR_TYPE);
nops.setTitleText("WARNING");
nops.setContentText(
"Failed to Load Ad, Please check your internet connection !!");
nops.setConfirmText("Ok");
nops.show();
}
@Override
public void onUnityAdsShowStart(String placementId) {
Log.v("UnityAdsExample", "onUnityAdsShowStart: " + placementId);
//progressDialog.dismiss();
}
@Override
public void onUnityAdsShowClick(String placementId) {
Log.v("UnityAdsExample", "onUnityAdsShowClick: " + placementId);
}
@Override
public void onUnityAdsShowComplete(
String placementId, UnityAds.UnityAdsShowCompletionState state) {
Log.v("UnityAdsExample", "onUnityAdsShowComplete: " + placementId);
if (state.equals(UnityAds.UnityAdsShowCompletionState.COMPLETED)) {
// doo
btnTimer(); // Set button
long ads_time = 6000 * 10 * 60 * 2; // add time
addTime(ads_time); // set the time
/*pDialog =
new SweetAlertDialog(MainActivity.this, SweetAlertDialog.CUSTOM_IMAGE_TYPE);
pDialog.setTitleText("Reward Time!.");
pDialog.setContentText("Watch the whole video to get + 2 hours");
pDialog.setTitle("Gracias por apoyar la aplicacion");
pDialog.setCancelable(false);
pDialog.setCustomImage(R.drawable.modojuegos);
pDialog.show();*/
Toast.makeText(MainActivity.this, " 2 hours successfully added to your time!", Toast.LENGTH_LONG).show();
// Toast.makeText(SocksHttpMainActivity.this, "Mode Listener: 2 hours
// successfully added to your time!", Toast.LENGTH_LONG).show();
// Reward the user for watching the ad to completion
} else {
// Do not reward the user for skipping the ad
}
}
};
// This banner view object will be placed at the bottom of the screen:
BannerView bottomBanner;
// View objects to display banners:
LinearLayout bottomBannerView;
///////////////////////////
protected void onCreate
//ads unity
UnityAds.initialize(getApplicationContext(), unityGameID, testMode);
showAds();
// load reward ads
loadRewardAds();
mTextViewCountDown = (TextView) findViewById(R.id.tvTimeRemaining);
timer_layout = (LinearLayout) findViewById(R.id.timerLayout);
mReward = (Button) findViewById(R.id.btnAddTime);
mReward.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View p1) {
DisplayRewardedVideoAd();
btnTimer();
long ads_time = 6000 * 10 * 60 * 2; // add time
addTime(ads_time); // set the time
Toast.makeText(MainActivity.this, "Espere mientras se carga el Video", Toast.LENGTH_LONG).show();
Toast.makeText(MainActivity.this, " 2 hours successfully added to your time!", Toast.LENGTH_LONG).show();
}
});
//////////////////////////////
private void loadRewardAds() {
IUnityAdsListener RewardListener = new IUnityAdsListener() {
@Override
public void onUnityAdsReady(String adUnitId) {
// Implement functionality for an ad being ready to show.
//Toast.makeText(getApplicationContext(),"Video ads loaded",Toast.LENGTH_SHORT).show();
}
@Override
public void onUnityAdsStart(String adUnitId) {
// Implement functionality for a user starting to watch an ad.
}
@Override
public void onUnityAdsFinish(String adUnitId, UnityAds.FinishState finishState) {
// Implement functionality for a user finishing an ad.
loadRewardAds();
}
@Override
public void onUnityAdsError(UnityAds.UnityAdsError error, String message) {
// Implement functionality for a Unity Ads service error occurring.
Toast.makeText(getApplicationContext(),message,Toast.LENGTH_SHORT).show();
loadRewardAds();
}
};
UnityAds.setListener(RewardListener);
UnityAds.load(RewardadUnitId);
}
private void showAds() {
// Create the bottom banner view object:
bottomBanner = new BannerView(this, bottomAdUnitId, new UnityBannerSize(320, 50));
// Set the listener for banner lifecycle events:
bottomBanner.setListener(bannerListener);
bottomBannerView = (LinearLayout) findViewById(R.id.bottomBanner);
LoadBannerAd(bottomBanner, bottomBannerView);
}
public void LoadBannerAd(BannerView bannerView, LinearLayout bannerLayout) {
// Request a banner ad:
bannerView.load();
// Associate the banner view object with the banner view:
bannerLayout.addView(bannerView);
}
@Override
public void onInitializationComplete() {
// Enable the show ad buttons since ads can now be loaded
// showAds();
DisplayRewardedVideoAd();
}
@Override
public void onInitializationFailed(UnityAds.UnityAdsInitializationError error, String message) {
Log.e(
"UnityAdsExample",
"Unity Ads initialization failed with error: [" + error + "] " + message);
}
// Implement a function to load a rewarded ad. The ad will start to show once the ad has been
// loaded.
public void DisplayRewardedAd() {
UnityAds.load(RewardadUnitId, loadListener);
}
// to show reward Ads
public void DisplayRewardedVideoAd() {
if (UnityAds.isReady(RewardadUnitId)) {
UnityAds.show(this, RewardadUnitId);
}else{
// Toast.makeText(getApplicationContext(),"ads not loaded",Toast.LENGTH_SHORT).show();
}
}
public void DisplayInterstitialAd() {
UnityAds.load(InterstitialadUnitId, loadListener);
}
//////////////////////////////
//time add
private CountDownTimer mCountDownTimer;
private boolean mTimerRunning;
private long saved_ads_time;
private long mTimeLeftInMillis;
private long mEndTime;
//private SweetAlertDialog pDialog;
private long mTimeLeftBtn;
private TextView mTextViewCountDown;
private LinearLayout timer_layout;
private boolean mTimerEnabled;
private
CountDownTimer mBtnCountDown;
//add time
private void start(){
if (saved_ads_time == 0){
Toast.makeText(MainActivity.this, "Su tiempo expirará pronto, haga clic en AGREGAR TIEMPO para renovar el acceso.", Toast.LENGTH_LONG).show();
long millisInput = 1000 * 500;
setTime(millisInput);
}
if (!mTimerRunning){
startTimer();
}
}
private void stop(){
if (mTimerRunning){
pauseTimer();
}
}
private void addTime(long time){
setTime(time);
if (mTimerRunning){
pauseTimer();
}
startTimer();
}
private void pauseTimer() {
mCountDownTimer.cancel();
mTimerRunning = false;
}
private void updateCountDownText(){
long days = TimeUnit.MILLISECONDS.toDays(mTimeLeftInMillis);
long daysMillis = TimeUnit.DAYS.toMillis(days);
long hours = TimeUnit.MILLISECONDS.toHours(mTimeLeftInMillis - daysMillis);
long hoursMillis = TimeUnit.HOURS.toMillis(hours);
long minutes = TimeUnit.MILLISECONDS.toMinutes(mTimeLeftInMillis - daysMillis - hoursMillis);
long minutesMillis = TimeUnit.MINUTES.toMillis(minutes);
long seconds = TimeUnit.MILLISECONDS.toSeconds(mTimeLeftInMillis - daysMillis - hoursMillis - minutesMillis);
String resultString = days + "d:" + hours + "h:" + minutes + "m:" + seconds + "s";
mTextViewCountDown.setText(resultString);
}
private void setTime(long milliseconds) {
saved_ads_time = mTimeLeftInMillis + milliseconds;
mTimeLeftInMillis = saved_ads_time;
updateCountDownText();
}
private void saveTime(){
SharedPreferences saved_current_time = getSharedPreferences("time", Context.MODE_PRIVATE);
SharedPreferences.Editor time_edit = saved_current_time.edit();
time_edit.putLong("SAVED_TIME", mTimeLeftInMillis);
time_edit.apply();
}
private void resumeTime(){
SharedPreferences time = getSharedPreferences("time", Context.MODE_PRIVATE);
long saved_time = time.getLong("SAVED_TIME", 0);
setTime(saved_time);
// Use this code to continue time if app close accidentally while connected
String state = SkStatus.getLastState();
if (SkStatus.SSH_CONNECTED.equals(state)) {
if (!mTimerRunning){
startTimer();
}
}
mTimerEnabled = true;
}
private void startTimer() {
mEndTime = System.currentTimeMillis() + mTimeLeftInMillis;
mCountDownTimer = new CountDownTimer(mTimeLeftInMillis, 1000) {
@Override
public void onTick(long millisUntilFinished) {
mTimeLeftInMillis = millisUntilFinished;
saveTime();
updateCountDownText();
}
@Override
public void onFinish() {
mTimerRunning = false;
pauseTimer();
saved_ads_time = 0;
// Code for auto stop vpn (sockshtttp)
Intent stopVPN = new Intent(SocksDNSService.TUNNEL_SSH_STOP_SERVICE);
LocalBroadcastManager.getInstance(MainActivity.this)
.sendBroadcast(stopVPN);
Toast.makeText(MainActivity.this,"¡Se acabó el tiempo! Haga clic en Agregar + Hora para renovar el acceso.", Toast.LENGTH_LONG).show();
}
}.start();
mTimerRunning = true;
}
private void btnTimer() {
mBtnCountDown = new CountDownTimer(20000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
mTimeLeftBtn = millisUntilFinished;
mReward.setEnabled(false);
updateBtnText();
}
@Override
public void onFinish() {
mReward.setEnabled(true);
mReward.setText("ADD + TIME");
}
}.start();
}
private void updateBtnText() {
int seconds = (int) (mTimeLeftBtn / 1000) % 60;
String timeLeftFormatted;
if (seconds > 0) {
timeLeftFormatted = String.format(Locale.getDefault(),
"%02d", seconds);
mReward.setText("Refresh in " + timeLeftFormatted);
}
}
//end
//////////////////////////
Add optiones aditionales
timer_layout.setVisibility(View.VISIBLE);
start();
stop();
if (!mTimerEnabled){
resumeTime(); // resume time
}
showInterstitial();
///////////////////////////
Layout time
<android.support.v7.widget.CardView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="2.0dip"
app:cardElevation="2.0dip"
app:contentPadding="10dip"
android:id="@+id/connection_cardView"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="10dp">
<LinearLayout
android:orientation="horizontal"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="7dp"
android:id="@+id/timerLayout">
<ImageView
android:src="@drawable/image_1"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="3dp"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1.0">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Time Left:"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0d:0h:0m:0s"
android:textSize="13.0sp"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/tvTimeRemaining"/>
</LinearLayout>
<Button
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
android:layout_width="150dp"
android:layout_height="35dp"
android:text="ADD + TIME"
android:id="@+id/btnAddTime"
android:textColor="#FFFFFFFF"
android:background="?colorPrimary"
style="?android:attr/buttonStyleSmall"/>
</LinearLayout>
</android.support.v7.widget.CardView>
////////////////////////////
Layout banner
<LinearLayout
android:id="@+id/bottomBanner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center"
android:layout_margin="5dp">
</LinearLayout>