qb02@アプリ屋さんの備忘録

アプリ作成時のメモを記載してます('Θ')

qb02:プライバシーポリシー

・インターネット、ネットワーク接続の権限の利用

qb02が配信するアプリは、広告配信を目的として以下の広告配信事業者がご利用者の情報を自動取得する場合がございます。この情報から個人が特定されることはありません。取得する情報、利用目的、第三者への提供等につきましては、以下の広告配信事業者のアプリケーション・プライバシーポリシーのリンクよりご確認ください。

 

AdMob(Google Inc.)
https://policies.google.com/technologies/ads

【Android】How to implement video reward advertisement

Android】 Remembrance on how to implement Admob video reward advertisement

【Windows10】

【Andoroid Studio 3.1.1】

 

The necessary information is below.

RewardedVideoAd mRewardedVideoAd;
String movie_id = "ca-app-pub-3940256099942544/5224354917"; // Admob Test ID
MobileAds.initialize(this, movie_id); // Initialize
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
mRewardedVideoAd.setRewardedVideoAdListener;
mRewardedVideoAd.loadAd(movie_id, new AdRequest.Builder().build()); // ads request
mRewardedVideoAd.show(); // ads play
If Uncle Admob comes out, it can be implemented normally.

f:id:qb02:20180611113257p:plain

 

Implementation image

public class MainActivity extends AppCompatActivity {

RewardedVideoAd mRewardedVideoAd;
String movie_id = "ca-app-pub-3940256099942544/5224354917";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.MainActivity);

MobileAds.initialize(this, movie_id); // initialize
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);


mRewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener()
{
@Override
public void onRewarded(RewardItem reward) {
// Process when giving reward for video advertisement reproduction
}

@Override
public void onRewardedVideoAdLeftApplication() {
// Processing when leaving video advertisement (go to a browser, etc.)
}

@Override
public void onRewardedVideoAdClosed() {
// Processing at the end of playback of movie
}

@Override
public void onRewardedVideoAdFailedToLoad(int errorCode) {
// Processing when video loading fails
}

@Override
public void onRewardedVideoAdLoaded() {
// Processing when preparation for reproducing movie is completed

if (mRewardedVideoAd.isLoaded())
{
mRewardedVideoAd.show();
}
}

@Override
public void onRewardedVideoAdOpened() {
// Processing when transitioning to movie screen
}

@Override
public void onRewardedVideoStarted() {
// Processing when starting playback of movie
}

@Override
public void onRewardedVideoCompleted() {
// Processing when the viewer finishes watching a movie
}
});

mRewardedVideoAd.loadAd(movie_id, new AdRequest.Builder().build()); // ads request
}
}

 

import can be done with Alt + Enter

 

When publishing to Google Play, please change movie_id
It is OK if you change to ID for video reward advertisement acquired with Admob.

movie_id = "ca-app-pub-3940256099942544/5224354917"

movie_id = "ca-app-pub-xxxxxxxxxxxxxxxx/yyyyyyyyyy"

 

In the case of the above implementation, immediately after activating MainActivity, video advertisement flows suddenly. It seems that it is common to listen in the dialog etc etc whether to reproduce before the movie is played so that the user will not be surprised.

play.google.com

Actual implementation image

f:id:qb02:20180611131805p:plain
f:id:qb02:20180611131843p:plain

 

Hide ads to display a dialog

 

public class MainActivity extends AppCompatActivity {

RewardedVideoAd mRewardedVideoAd;
String movie_id = "ca-app-pub-3940256099942544/5224354917";
Button button_movie_Ad_delete;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.MainActivity);

button_movie_Ad_delete = (Button)findViewById(R.id.button_movie_Ad_delete);

MobileAds.initialize(this, movie_id); // 初期化
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); // インスタンスの生成


mRewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener()
{
@Override
public void onRewarded(RewardItem reward) {
// 動画広告再生に対する報酬を与えたときの処理
}

@Override
public void onRewardedVideoAdLeftApplication() {
// 動画広告から離れるときの処理(ブラウザに行くなど)
}

@Override
public void onRewardedVideoAdClosed() {
// 動画の再生を終了したときの処理
}

@Override
public void onRewardedVideoAdFailedToLoad(int errorCode) {
// 動画の読み込みが失敗したときの処理
}

@Override
public void onRewardedVideoAdLoaded() {
// 動画を再生する準備が完了したときの処理
if (mRewardedVideoAd.isLoaded())
{
mRewardedVideoAd.show();
}
}

@Override
public void onRewardedVideoAdOpened() {
// 動画画面に遷移したときの処理
}

@Override
public void onRewardedVideoStarted() {
// 動画を再生を開始したときの処理
}

@Override
public void onRewardedVideoCompleted() {
// 動画を最後まで見終わったときの処理
// 広告非表示のコードは省略
Toast.makeText(this, "ご視聴ありがとうございました!\n広告が非表示になります。", Toast.LENGTH_LONG).show();
}
});


button_movie_Ad_delete.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {

// 広告非表示ボタンが押されたときにダイアログを表示する
// AlertDlg.classのコードは省略。自分の好きな処理を実装すればOK
Intent intent = new Intent(getApplication(), AlertDlg.class);
startActivityForResult(intent, 0);
}
});
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

// ダイアログでユーザーが選択した結果に応じて処理を変える
// 再生するを押下した場合は動画を再生、キャンセルの場合は何もしない
if(globals.Ad_delete_flag == true)
{
movie_view();
}
}

public void movie_view()
{
mRewardedVideoAd.loadAd(movie_id, new AdRequest.Builder().build()); // 広告のリクエス
Toast.makeText(this, "動画の再生準備をしています。\nしばらくお待ちください。", Toast.LENGTH_LONG).show();
}
}

 

that's all. 
play.google.com

 

【Android】インタースティシャル広告 実装方法

f:id:qb02:20181020230026p:plain

【Windows10】

【Andoroid studio 3.1.1】

 

インタースティシャル広告の実装方法です。

実際のアプリで確認したい場合は、以下のアプリをダウンロードして、アプリ起動後、画面上にあるクリア→OKを押すとインタースティシャル広告が出てきます。

play.google.com

 

必要な情報は以下です。

なお、★間はバナー広告、インタースティシャル広告、動画リワード広告で共通の処理となります。

パーミッションの追加

AndroidManifest.xml

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

②広告を使用する準備

build.gradle(app配下)

implementation 'com.google.android.gms:play-services-ads:15.0.1'

③インタースティシャル広告の定義

// インタースティシャル広告のID
private InterstitialAd interstitialAd;
AdRequest adRequest_interstitial;
String AdMobID = "ca-app-pub-3940256099942544/1033173712"; // Test ID

インタースティシャル広告の設定

// インタースティシャル広告の設定
interstitialAd = new InterstitialAd(this);
interstitialAd.setAdUnitId(AdMobID);

⑤インタースティシャル広告のリスナーの定義

//広告状態のリスナー
interstitialAd.setAdListener(new AdListener() {

//広告が閉じられた時
@Override
public void onAdClosed() {
super.onAdClosed();
}

//広告がロードできた時
@Override
public void onAdLoaded() {
super.onAdLoaded();
}

//広告がロードできなかった時
@Override
public void onAdFailedToLoad(int i) {
super.onAdFailedToLoad(i);
}
});

インタースティシャル広告の読み込み

adRequest_interstitial = new AdRequest.Builder().build();
interstitialAd.loadAd(adRequest_interstitial);

インタースティシャル広告の表示

if(interstitialAd != null && interstitialAd.isLoaded())
{
interstitialAd.show();
}

■最終的な実装例

アプリ起動直後にインタースティシャル広告が表示される実装です。

画面に一輪車に乗ったムックもどきが表示されれば成功です。

public class MainActivity extends AppCompatActivity {

// インタースティシャル広告のID
private InterstitialAd interstitialAd;
AdRequest adRequest_interstitial;
String AdMobID = "ca-app-pub-3940256099942544/1033173712"; // Test ID

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// インタースティシャル広告の設定
interstitialAd = new InterstitialAd(this); // getBaseContext()
interstitialAd.setAdUnitId(AdMobID);

//広告状態のリスナー
interstitialAd.setAdListener(new AdListener() {

//広告が閉じられた時
@Override
public void onAdClosed() {
super.onAdClosed();
}

//広告がロードできた時
@Override
public void onAdLoaded() {
super.onAdLoaded();
showInterstitial();
}

//広告がロードできなかった時
@Override
public void onAdFailedToLoad(int i) {
super.onAdFailedToLoad(i);
}
});
}

@Override
protected void onResume() {
load_ad();
super.onResume();
}

void load_ad()
{
adRequest_interstitial = new AdRequest.Builder().build();
interstitialAd.loadAd(adRequest_interstitial);
}

public void showInterstitial() {
if(interstitialAd != null && interstitialAd.isLoaded())
{
interstitialAd.show();
}
}
}

あとは、AdMobID = "ca-app-pub-3940256099942544/1033173712"部分を、Admobで取得したIDに変更すれば完了です。

以降は、実装を順に記載しているだけなので、必要のない方はここまででOKです。

 

qb02.hatenablog.com

play.google.com

 

■実装方法

パーミッションの追加

AndroidManifest.xmlに以下を追加。

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

 

広告を使用する準備

build.gradle(app配下)に以下を追加。

implementation 'com.google.android.gms:play-services-ads:15.0.1'

ただし、最新のバージョンを追加する必要があるので注意。

以下方法で設定すればいけるはず。

f:id:qb02:20181020233119p:plain

f:id:qb02:20181020233140p:plain

Library dependencyを押下後、play-services-adsで検索して追加すればOK

③インタースティシャル広告の定義

MainActivity.javaで以下のように定義。

importはAlt+Enterでいける。

public class MainActivity extends AppCompatActivity {

// インタースティシャル広告のID
private InterstitialAd interstitialAd;
AdRequest adRequest_interstitial;
String AdMobID = "ca-app-pub-3940256099942544/1033173712"; // Test ID

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}
}

インタースティシャル広告の設定

MainActivity.javaで以下のように設定。

importはAlt+Enterでいける。

public class MainActivity extends AppCompatActivity {

// インタースティシャル広告のID
private InterstitialAd interstitialAd;
AdRequest adRequest_interstitial;
String AdMobID = "ca-app-pub-3940256099942544/1033173712"; // Test ID

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// インタースティシャル広告の設定
interstitialAd = new InterstitialAd(this); // getBaseContext()
interstitialAd.setAdUnitId(AdMobID);


}
}

⑤インタースティシャル広告のリスナーの定義

MainActivity.javaで以下のようにリスナーを定義。

public class MainActivity extends AppCompatActivity {

// インタースティシャル広告のID
private InterstitialAd interstitialAd;
AdRequest adRequest_interstitial;
String AdMobID = "ca-app-pub-3940256099942544/1033173712"; // Test ID

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// インタースティシャル広告の設定
interstitialAd = new InterstitialAd(this); // getBaseContext()
interstitialAd.setAdUnitId(AdMobID);

//広告状態のリスナー
interstitialAd.setAdListener(new AdListener() {

//広告が閉じられた時
@Override
public void onAdClosed() {
super.onAdClosed();
}

//広告がロードできた時
@Override
public void onAdLoaded() {
super.onAdLoaded();
}

//広告がロードできなかった時
@Override
public void onAdFailedToLoad(int i) {
super.onAdFailedToLoad(i);
}
});
}
}

インタースティシャル広告の読み込み

MainActivity.javaで以下のようにインタースティシャル広告を読み込む。

public class MainActivity extends AppCompatActivity {

// インタースティシャル広告のID
private InterstitialAd interstitialAd;
AdRequest adRequest_interstitial;
String AdMobID = "ca-app-pub-3940256099942544/1033173712"; // Test ID

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// インタースティシャル広告の設定
interstitialAd = new InterstitialAd(this); // getBaseContext()
interstitialAd.setAdUnitId(AdMobID);

//広告状態のリスナー
interstitialAd.setAdListener(new AdListener() {

//広告が閉じられた時
@Override
public void onAdClosed() {
super.onAdClosed();
}

//広告がロードできた時
@Override
public void onAdLoaded() {
super.onAdLoaded();
}

//広告がロードできなかった時
@Override
public void onAdFailedToLoad(int i) {
super.onAdFailedToLoad(i);
}
});
}

@Override
protected void onResume() {
load_ad();
super.onResume();
}

void load_ad()
{
adRequest_interstitial = new AdRequest.Builder().build();
interstitialAd.loadAd(adRequest_interstitial);
}
}

インタースティシャル広告の表示

MainActivity.javaで以下のようにインタースティシャル広告を表示。

public class MainActivity extends AppCompatActivity {

// インタースティシャル広告のID
private InterstitialAd interstitialAd;
AdRequest adRequest_interstitial;
String AdMobID = "ca-app-pub-3940256099942544/1033173712"; // Test ID

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// インタースティシャル広告の設定
interstitialAd = new InterstitialAd(this); // getBaseContext()
interstitialAd.setAdUnitId(AdMobID);

//広告状態のリスナー
interstitialAd.setAdListener(new AdListener() {

//広告が閉じられた時
@Override
public void onAdClosed() {
super.onAdClosed();
}

//広告がロードできた時
@Override
public void onAdLoaded() {
super.onAdLoaded();
showInterstitial();
}

//広告がロードできなかった時
@Override
public void onAdFailedToLoad(int i) {
super.onAdFailedToLoad(i);
}
});
}


@Override
protected void onResume() {
load_ad();
super.onResume();
}

void load_ad()
{
adRequest_bottom = new AdRequest.Builder().build();
interstitialAd.loadAd(adRequest_interstitial);
}

public void showInterstitial() {
if(interstitialAd != null && interstitialAd.isLoaded())
{
interstitialAd.show();
}
}
}

以上です。

 

qb02.hatenablog.com

【Android】パチンコ設定判別カウンターNEO リリース!

f:id:qb02:20181020225003p:plain

パチンコ設定判別カウンターNEO

Google Playにリリースしました!

play.google.com

 

パチンコも設定が付くようになりました。

スロットと同様にパチンコも設定判別をする時代ですね!

そこで、設定判別要素をカウントして簡単に設定判別するAndroidアプリを作りました!

よかったらダウンロードよろしくお願いします('Θ')

 

play.google.com

 

■使用方法

①"機種"タブから自分が打っている機種を選択

f:id:qb02:20181007185114p:plain

 

②"通常"、"当/確変"、"潜伏"タブから設定要素をカウント

f:id:qb02:20181020215222p:plain

 

③設定毎の期待値を表示

f:id:qb02:20181020215549p:plain

 

以上です。

 

■類似検索

パチンコ カウンター

パチンコ 設定

パチンコ 設定差

パチンコ 設定判別

パチンコ 設定看破

パチンコ 設定 攻略

パチンコ アプリ

パチンコ アプリ 設定

設定付きパチンコ アプリ

設定付きパチンコ 設定判別

 

play.google.com

 

【Android】TabLayout 実装方法

【Windows10】

Android Studio 3.1.1】

f:id:qb02:20181007185114p:plain

 

上図のようにTabLayoutを実装する方法です。

ViewPagerを使って、左右にスワイプすると選択タブが切り替わる実装となります。

実際のアプリは、Google Playで公開してますので、参考にどうぞ。

 

play.google.com

 

 ①MainActivityのxmlにTabLayoutを追加

f:id:qb02:20181007225140p:plain

 

xmlの中身はこんな感じ↓

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/adView_bottom"
android:orientation="vertical">

<LinearLayout
android:id="@+id/LinearLayout_menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<Button
android:id="@+id/button_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/waku_base"
android:textSize="12dp"
android:text="メニュー" />

<Button
android:id="@+id/button_backlight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/waku_base2"
android:textSize="12dp"
android:text="バックライト" />

<Button
android:id="@+id/button_clear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/waku_base"
android:textSize="12dp"
android:text="クリア" />

<Button
android:id="@+id/button_calc_mode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/waku_base2"
android:textSize="12dp"
android:text="加算" />
</LinearLayout>

<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:background="#FFFFFF"
app:tabBackground="@drawable/tab_color_selector"
app:tabSelectedTextColor="#000000"
app:tabTextAppearance="@style/TabTextAppearance">

<android.support.design.widget.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<android.support.design.widget.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<android.support.design.widget.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<android.support.design.widget.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<android.support.design.widget.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</android.support.design.widget.TabLayout>

<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" >

</android.support.v4.view.ViewPager>

</LinearLayout>

LinearLayoutでandroid:orientation="vertical"を指定し、その中にTabLayout→ViewPagerとしないと、ViewPagerが画面全体を覆ってしまい、タブにタッチできなかったので上記のような実装にしています。

 

②MainActivityでTabLayoutの実装

MainActivityのonCreateのところで以下のように実装

 

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);

ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setOffscreenPageLimit(4);
viewPager.setAdapter(pagerAdapter);
tabLayout.setupWithViewPager(viewPager);
}

viewPager.setOffscreenPageLimit(4)は、TabLayoutのタブ数(今回は5つ) - 1の数を指定しています。これについては実装してなくてもOK。

なお、import android.support.v4.view.PagerAdapter;

があると、以下のところでインスタンスが生成されないとエラーがでるので上記は削除すること。

new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());

 

③PagerAdapterの実装

以下図のようにJava Classを追加する

Packageのところは、自分のパッケージ名が入っていると思いますが、消さなくてもOKf:id:qb02:20181007233015p:plain

 

以下のように実装する

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class PagerAdapter extends FragmentPagerAdapter {

int numberOfTabs;
private CharSequence[] tabTitles = {"機種", "通常", "当/確変", "潜伏", "結果"};

public PagerAdapter(FragmentManager fm, int numberOfTabs){
super(fm);
this.numberOfTabs = numberOfTabs;
}

@Override
public CharSequence getPageTitle(int position) {
return tabTitles[position];
}

@Override
public Fragment getItem(int position) {

switch (position){
case 0:
return new Fragment_kisyu_select();
case 1:
return new Fragment_tuzyo();
case 2:
return new Fragment_kakuhen();
case 3:
return new Fragment_senpuku();
case 4:
return new Fragment_result();
default:
return null;
}
}

@Override
public int getCount() {
return numberOfTabs;
}

}

上記のFragment getItemにある、Fragment_result()等でタブ毎の処理を実装します。また、タブ毎に表示するレイアウトも読み込まれるようになります(後述④参照)。ここでは呼び出すだけ。

 

Fragmentの追加

③のFragment getItemで追加した分だけFragmentを追加する必要があります。

ここで、タブの数より少ないFragmentしか準備せずにビルドしても落ちるので、必ずタブの数分のFragmentを追加しましょう今回の例では、④を5つ分(タブの数)追加する必要があります。

f:id:qb02:20181007235437p:plain

f:id:qb02:20181007235616p:plain

これでxmljavaファイルが作成されます。

Fragment Name、Fragment Layout Nameは任意の名前でOK。

xmlでは、自分の好きなようにレイアウトを作成してください。ここでは省略します。

以下のjavaファイルの中身の例では追加時からいらないところを削除しています。


import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.content.res.ResourcesCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

public class Fragment_result extends Fragment {

public Fragment_result() {
// Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_result, container, false);
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);

//ここにViewを追加する
LinearLayout_judge_1 = view.findViewById(R.id.LinearLayout_judge_1);
}
}

④では、ここまでをタブの数分だけ追加する必要があります。

これでビルドして、落ちなければ完了です。

 

play.google.com

【Android】Admob 動画リワード広告の実装方法

Android】Admob 動画リワード広告の実装方法の備忘録

【Windows10】

【Andoroid Studio 3.1.1】

 

 

qb02.hatenablog.com

必要な情報は以下です。

パーミッションの追加、広告を使用するための準備は、上記過去記事のインタースティシャル広告 実装方法を参照してください。

RewardedVideoAd mRewardedVideoAd;
String movie_id = "ca-app-pub-3940256099942544/5224354917"; // Admob Test ID
MobileAds.initialize(this, movie_id); // 初期化
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); // インスタンスの生成
mRewardedVideoAd.setRewardedVideoAdListener // 詳細は下記実装を参照
mRewardedVideoAd.loadAd(movie_id, new AdRequest.Builder().build()); // 広告のリクエス
mRewardedVideoAd.show(); // 広告の再生;

Admobおじさんが出てくれば、正常に実装できています。

f:id:qb02:20180611113257p:plain


 

 

実装イメージ

public class MainActivity extends AppCompatActivity {

RewardedVideoAd mRewardedVideoAd;
String movie_id = "ca-app-pub-3940256099942544/5224354917";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.MainActivity);

MobileAds.initialize(this, movie_id); // 初期化
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); // インスタンスの生成


mRewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener()
{
@Override
public void onRewarded(RewardItem reward) {
// 動画広告再生に対する報酬を与えたときの処理
}

@Override
public void onRewardedVideoAdLeftApplication() {
// 動画広告から離れるときの処理(ブラウザに行くなど)
}

@Override
public void onRewardedVideoAdClosed() {
// 動画の再生を終了したときの処理
}

@Override
public void onRewardedVideoAdFailedToLoad(int errorCode) {
// 動画の読み込みが失敗したときの処理
}

@Override
public void onRewardedVideoAdLoaded() {
// 動画を再生する準備が完了したときの処理
if (mRewardedVideoAd.isLoaded())
{
mRewardedVideoAd.show();
}
}

@Override
public void onRewardedVideoAdOpened() {
// 動画画面に遷移したときの処理
}

@Override
public void onRewardedVideoStarted() {
// 動画を再生を開始したときの処理
}

@Override
public void onRewardedVideoCompleted() {
// 動画を最後まで見終わったときの処理
}
});

mRewardedVideoAd.loadAd(movie_id, new AdRequest.Builder().build()); // 広告のリクエス
}
}

 

※importはAlt + Enterでいける

 

Google Playに公開する際は、movie_idを

Admobで取得した動画リワード広告用のIDに変更すればOKです。

movie_id = "ca-app-pub-3940256099942544/5224354917"

movie_id = "ca-app-pub-xxxxxxxxxxxxxxxx/yyyyyyyyyy"

 

上記実装の場合、MainActivityを起動した直後に、いきなり動画広告が流れます。ユーザーがびっくりしないように動画再生前に再生するかどうかをダイアログ等で聞くのが一般的なようです。

 

自分が公開しているアプリで例を以下に記載します。

play.google.com

 

【実際の実装イメージ】

f:id:qb02:20180611131805p:plain
f:id:qb02:20180611131843p:plain

 

広告非表示を押下でダイアログを表示します

 

public class MainActivity extends AppCompatActivity {

RewardedVideoAd mRewardedVideoAd;
String movie_id = "ca-app-pub-3940256099942544/5224354917";
Button button_movie_Ad_delete;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.MainActivity);

button_movie_Ad_delete = (Button)findViewById(R.id.button_movie_Ad_delete);

MobileAds.initialize(this, movie_id); // 初期化
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); // インスタンスの生成


mRewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener()
{
@Override
public void onRewarded(RewardItem reward) {
// 動画広告再生に対する報酬を与えたときの処理
}

@Override
public void onRewardedVideoAdLeftApplication() {
// 動画広告から離れるときの処理(ブラウザに行くなど)
}

@Override
public void onRewardedVideoAdClosed() {
// 動画の再生を終了したときの処理
}

@Override
public void onRewardedVideoAdFailedToLoad(int errorCode) {
// 動画の読み込みが失敗したときの処理
}

@Override
public void onRewardedVideoAdLoaded() {
// 動画を再生する準備が完了したときの処理
if (mRewardedVideoAd.isLoaded())
{
mRewardedVideoAd.show();
}
}

@Override
public void onRewardedVideoAdOpened() {
// 動画画面に遷移したときの処理
}

@Override
public void onRewardedVideoStarted() {
// 動画を再生を開始したときの処理
}

@Override
public void onRewardedVideoCompleted() {
// 動画を最後まで見終わったときの処理
// 広告非表示のコードは省略
Toast.makeText(this, "ご視聴ありがとうございました!\n広告が非表示になります。", Toast.LENGTH_LONG).show();
}
});


button_movie_Ad_delete.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {

// 広告非表示ボタンが押されたときにダイアログを表示する
// AlertDlg.classのコードは省略。自分の好きな処理を実装すればOK
Intent intent = new Intent(getApplication(), AlertDlg.class);
startActivityForResult(intent, 0);
}
});
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

// ダイアログでユーザーが選択した結果に応じて処理を変える
// 再生するを押下した場合は動画を再生、キャンセルの場合は何もしない
if(globals.Ad_delete_flag == true)
{
movie_view();
}
}

public void movie_view()
{
mRewardedVideoAd.loadAd(movie_id, new AdRequest.Builder().build()); // 広告のリクエス
Toast.makeText(this, "動画の再生準備をしています。\nしばらくお待ちください。", Toast.LENGTH_LONG).show();
}
}

 

以上です。

 

qb02.hatenablog.com

qb02.hatenablog.com
 


 

【Android】パチスロ小役カウンターNEO リリース!

スロット打つ人の大半が持っているであろう小役カウンター。
常勝を目指すなら必須のアイテムですね!

最近の機種においては小役の出現率、当選率だけでは設定看破は難しく、
モード移行率やボーナス/ART終了画面等の出現も加味しないとなかなか設定看破できません。

現に自分自身も小役がついてくるから粘った結果、大負けってこともよくありましたw
よく考えると、天国移行率が弱いとか低設定要素もあったのに小役だけを信じた結果かなと思います。

そこで、上記もカウントできるような小役カウンターないかなと探したのですが、
見つからなかったので作りましたw
もしよかったらダウンロードよろしくお願いします('Θ')

f:id:qb02:20180608003201p:plain
パチスロ小役カウンターNEO】
Android
ダウンロードはこちらからどうぞ('Θ')
play.google.com


f:id:qb02:20180608003427p:plainf:id:qb02:20180608003438j:plainf:id:qb02:20180608003448j:plain


小役カウンターですw
小役毎に出現数、CZ当選数、ART当選数、BIG回数、REG回数、状態移行数をカウントでき、
それぞれの確率を算出し、表示します。

さらに低確、高確、超高確でカウントが分けられるので、
それぞれの状態での当選率も確認することができます!

CZ当選数は機種によっては複数あるので、3種類用意しています。
BIGは赤、青、白、異色の4種類、REGは赤、青、白の3種類用意しています。
機種によっては色がないかもしれませんが、そのときは何かで代用してくださいw
状態移行は低確→高確、低確→超高確、高確→超高確の3種類用意しています。

一覧でまとめて見たい場合は、見たい小役のボタンを長押しで確認できます!


f:id:qb02:20180608003503j:plain


ARTセット数も設定差があると思うので、カウントできるようにしています。
初当たり時のARTセット数が何セットだったか、対応するボタンを押してください。
ART初当たり時の平均セット数を表示します。
引き戻しも設定判別要素なので、引き戻しがあった場合はカウントしてください。


f:id:qb02:20180608003519j:plain


モード移行率!これ結構重要です!
機種によっては大きな設定差があります。
モードA→モードB、モードA→天国A等のモード移行率をカウントし、確率を表示します。
また、画面左上でモード毎の滞在率を表示しています。
小役確率は設定6相当だけど、モード移行率が弱いなどが見えてきて、
設定6ではないのでは…?と冷静に判断できるようになります(願望)

一覧でまとめて見たい場合は、いずれかのカウントボタンを長押しで確認できます!


f:id:qb02:20180608003527j:plain


もはや設定判別の定番となった、ボーナス/ARTなどの開始/終了画面もカウントできます!
脳内では偶数設定かぁと思っても、よくよくカウントしてみると奇数設定示唆も結構多くて、
偶数設定とも言えないのでは…?と震える(白目で)ことができます。
人間、よい方を見がちですからねw


f:id:qb02:20180608012128p:plain


便利機能として、自分の好きなサイトのURLを登録してすぐにアクセスできます!
解析などの情報サイトを登録しておけば、効率よく設定判別できるかと思います。
別に解析サイトじゃなくてもいいんですよ('Θ')自分の好きなサイトでいいんです'Θ'


以上で紹介を終わりますw
ここまで読んでくれてありがとうございました!
それでは、よいスロットライフを('Θ')

パチスロ小役カウンターNEO】
Android
ダウンロードはこちらからどうぞ('Θ')
play.google.com