startActivity(intent);
においてダイヤル発信はできたのですが
相手が応答した時や通話中だった場合のイベントを取得したいです
次にどんなコードを書き込んだらよいでしょうか?
お手数ですが教えていただけますか?
2011年12月11日14:13 And-Y <yumeo...@yahoo.co.jp>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
--
--
Toru Tashiro
toru...@gmail.com
コメントありがとうございます
startActivity(intent); をstartActivityForResult(intent, test);
に変えてやってみました
new Intent(Intent.ACTION_CALL,Uri.parse("tel:0123456789"));
startActivityForResult(intent, test);
を実行した時点で結果はLogに0が返ってきました
その後10秒ほどして相手を呼び出します
そして話中または応答と言う手順に入ります
やはり何かイベント的なものはないでしょうか?
下記のようなコードでやってみました
まだAndoroido及びJavaを始めて半年くらいなので
startActivityForResultに対するコードの書き方
考え方が間違ってるでしょうか?
ただ私にとってstartActivity(intent)をstartActivityForResult
に替える事で戻り値が取得出来る事が分かっただけでもとても
うれしいです^^ ありがとうございます^^
package an.doro144;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class Project_144 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}// End onCreate ----------------------------
// main.xmlでボタンイベント起動を記載している
public void AAA(View view) {
int test=0;
Intent intent = // 直接電話をかける
new Intent(Intent.ACTION_CALL,Uri.parse("tel:0123456789"));
// アクティビティーの起動
//startActivity(intent);
startActivityForResult(intent, test);
Log.d ( "ABC",String.valueOf(test));
}// End void AAA(View view)
}// End Activity
onActivityResult メソッドで受け取ります。
http://developer.android.com/intl/ja/reference/android/app/Activity.html#StartingActivities
ただ、DIALERアクティビティがそれぞれの状態を返すリザルトを返すとは限らないので試してみてください。
だめなら、コンテントプロバイダの CallLog.Calls.CONTENT_URI を使って通話履歴を取ることもできると思います。
ただ、通話中なのか通話完了なのかなど、判断が必要だと思います。
2011年12月12日23:42 And-Y <yumeo...@yahoo.co.jp>:
私の場合、呼び出し先のアクティビティの起動タイプ(?)を
シングルタスクだったかシングルインスタンスにしていたので
キャンセルされていました。
もし、該当しているならスタンダードで起動してみてはいかがでしょうか?
アルゴロード
アルゴロード
http://developer.android.com/intl/ja/reference/android/app/Activity.h...
接続してみましたが今の私のスキルでは難しいです自分自身に悔しさを感じます
ここに質問する前に通話履歴でなんとかならないかと試みましたが通話が終了した
時点で履歴が書き込まれるように想いました現在進行中の状態ではまだ履歴に
ならないような感じを受けました
それから質問する前に留守番電話のアプリがないか検索してみましたあるとすれば何か方法が
あるんじゃないかと逆算する為に検索したんですが結果はNGでした
またアンドロイド 通話応答 などでも検索したんですがこれもHitしません
でした
やっぱり無いのかなぁ・・・・
今の私には無理なのかな~? と挫折ぎみです
On 12月13日, 午前12:29, 田代透 <toru2...@gmail.com> wrote:
> startActivityForResult で呼び出したアクティビティのリザルトは
>
> onActivityResult メソッドで受け取ります。http://developer.android.com/intl/ja/reference/android/app/Activity.h...
>
> ただ、DIALERアクティビティがそれぞれの状態を返すリザルトを返すとは限らないので試してみてください。
> だめなら、コンテントプロバイダの CallLog.Calls.CONTENT_URI を使って通話履歴を取ることもできると思います。
> ただ、通話中なのか通話完了なのかなど、判断が必要だと思います。
>
> 2011年12月12日23:42 And-Y <yumeoibi...@yahoo.co.jp>:
> toru2...@gmail.com- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
Nakakaze Ichiro 様 こんばんは、お付き合いありがとうございます^^
コメントありがとうございます^^
戻り値0はキャンセルですか?じゃその後発信中でもイベントはありませんよ
て意味だと考えていいでしょうか?
スタンダードで起動 アルゴロード
スキル不足で申し訳ないですお手数ですが詳しく教えていただければ助かります
On 12月13日, 午後12:09, Nakakaze Ichiro <nakakaze_ich...@yahoo.co.jp>
wrote:
> 念のため、> > > int test=0
> > > > startActivityForResult(intent, test);
>
> > > > Log.d ( "ABC",String.valueOf(test));
>
> では、
> 「test」の値は、ゼロから変わりませんので、、
>
> アルゴロード
>
> --- On Tue, 2011/12/13, Nakakaze Ichiro <nakakaze_ich...@yahoo.co.jp> wrote:
>
>
>
> > ここへ、返信していいのでしょうか?
> > 戻り値=0は、キャンセルですね。
>
> > 私の場合、呼び出し先のアクティビティの起動タイプ(?)を
> > シングルタスクだったかシングルインスタンスにしていたので
> > キャンセルされていました。
>
> > もし、該当しているならスタンダードで起動してみてはいかがでしょうか?
>
> > アルゴロード
>
> > --- On Tue, 2011/12/13, 田代透 <toru2...@gmail.com> wrote:
>
> > > startActivityForResult で呼び出したアクティビティのリザルトは
>
> > > onActivityResult メソッドで受け取ります。
> > >http://developer.android.com/intl/ja/reference/android/app/Activity.h...
>
> > > ただ、DIALERアクティビティがそれぞれの状態を返すリザルトを返すとは限らないので試してみてください。
> > > だめなら、コンテントプロバイダの CallLog.Calls.CONTENT_URI を使って通話履歴を取ることもできると思います。
> > > ただ、通話中なのか通話完了なのかなど、判断が必要だと思います。
>
> > > 2011年12月12日23:42 And-Y <yumeoibi...@yahoo.co.jp>:
> > > > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。
>
> > > --
> > > --
> > > Toru Tashiro
> > > toru2...@gmail.com
>
> > > --
> > > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > > このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> > > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
Nakakaze Ichiro 様 こんばんは、お手数かけます
12月12日, 午後11:42 に投稿したコードに教えて頂いたコードを追加
してみました
Logに返ってくるのはおっしゃる通り0でしたが
protected final void onActivityResultは、Activityが終了した時点で
返ってくるイベントみたいに想いました 合ってますか?
ただ相手が話中の場合すぐに終了して0を返します
呼び出し中は、応答し通話終了後に返ってきました
時間差をうまく利用すれば、相手が話中かどうか?だけでも判断出来るのかな?
とそんな事を想いました
後、応答やっぱり欲しいです^^
>ここを紹介していいかどうかわかりませんが
> https://sites.google.com/a/techdoctranslator.com/jp/android/guide/manifest/activity-element#lmode
勝手に翻訳 ですよね?^^
私には、本家よりこちらの方が理解しやすいです^^ でもまだ理解してないです^^
時間かかりそうです
アルゴロード サインでしたか アルゴリズム、手順みたいなのを想像してました
松田聖子 AKB48 とかの意味ですね? 了解です^^
なんだかお忙しそうな感じのとこ時間をとって頂いてうれしいです
コードはこんな感じで理解しましたが合ってますか
package an.doro144;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class Project_144 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}// End onCreate ----------------------------
// main.xmlでボタンイベント起動を記載している
public void AAA(View view) {
int test=0;
Intent intent = // 直接電話をかける
new Intent(Intent.ACTION_CALL,Uri.parse("tel:117"));
// アクティビティーの起動
//startActivity(intent);
startActivityForResult(intent, test);
Log.d ( "ABC","初回"+String.valueOf(test));
}// End void AAA(View view)
@Override // 教えていただいたコードの追加分
protected final void onActivityResult(int req, int result, Intent
data) {//正常終了はRESULT_OK(= -1)
if ( result == RESULT_OK ) {
Log.d ( "ABC","OK:"+String.valueOf(result));//電話から戻った後にやりたいこ
と、を書く
}
else{
Log.d ( "ABC","NG:"+String.valueOf(result));
}// End if
super.onActivityResult(req, result, data);
}//onActivityResult
}// End Activity
通話が通じている間は、通話アクティビティが生きているのでリザルトは還ってこず
通話が終了してアクティビティが終了した時点でリザルトが帰ってきます。
話し中の場合にはそれでアクティビティが閉じられるのですぐに還ってくるのだと思います。
返ってくるコードが正常に通話でも話し中でも変わらぬ情報が(インテントに付加されるデーターも含めて)戻ってくるのなら、
リザルトが来た所でコンテンツプロバイダーに呼び出した電話番号で情報を問い合わせれば、
通話が成功したのか話し中だったのかの確認も出来るかと思います。
2011年12月15日0:01 And-Y <yumeo...@yahoo.co.jp>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
--
--
Toru Tashiro
toru...@gmail.com
添付のようなことなのだと思います。(実験用onActivityResult)
http://developer.android.com/reference/android/provider/CallLog.Calls.html
が参考になりますね。
いろいろ通話を変えて試行してみてはいかがでしょう。
CallLog.Calls.DURATIONがゼロだと通話していないようですが、、
自己責任でお願いします。(えらいスマンこって)
アルゴロード
上記のキーワードでググッて見てください。
サンプルコードがあるはずです。
ありがとうございます
startActivityForResultはコードを受け取るメソッドたしかにそのように感じました
話中だった場合画面の動きとしてもすぐに終了します
終了のメソッドでも時間差で話中が判断できそうだとな昨夜そんな事を想いました
コンテンツプロバイダーの情報取り出しのコードはどう書き込めばいいでしょうか?
最初に教えて頂いた
>startActivity ではなく startActivityForResult を使ったら何かコードが帰って来ませんか?
の使い方はこの事だったんだな? と悟ったしだいです^^
なにぶん例えば startActivityForResult( )の括弧の中の引数の型、個数をどう書き込めば?
のスキルです
ありがとうございます^^
http://developer.android.com/reference/android/provider/CallLog.Calls.html
うわあ~ 本家が出てきた~ 頑張ってみます^^
CallLog.Calls.DURATION も検索してみたら結構Hitしましたのでさぐってみたいと思います
ありがとうございます^^
TelephonyManagerは質問を投稿する前に調べてました
これは相手への発信した状態でなく自分の携帯の着信と通話と待受けでした
こちらから発信した場合相手が応答しているいないに関わらずすぐに
通話中のイベントが返ってきました
onCallStateChangedありがとうございます^^
検索してみます 相手が応答した場合に的をしぼってみます
ありがとうございます^^
たとえば二種類のActivityを呼び出すActivityが有ったとするとそれぞれのActivityを呼び出すのは
StartActivityForResult(intentA, 0);
StartActivityForResult(intentB, 0);
と言った具合に一意に書けますけど、Resultが戻って受け取るのは
onActivityResult 1つだけです。
どっちのActivityから戻ってきたのかはこのメソッドが呼び出されただけでは区別がつきません。
で、StartActivityForResultの2番目のパラメータが役に立ちます。
onActivityResultメソッドのパラメーターは3個
protected void onActivityResult(int requestCode, int resultCode, Intent data)
この一つ目のrequestCodeにStartActivityForResultの2番目のパラメーターで設定した値が帰ってきます
StartActivityForResult(intentA, 0);
StartActivityForResult(intentB, 1);
の2つの呼び出しがあったとするとrequestCodeには
intentAで呼び出されたActivityからのResultの場合には0が
intentBで呼び出されたActivityからのResultの場合には1が入ります。
このrequestCodeを使ってどちらから帰ってきたのかを識別して
それぞれから帰ってきた流れのコードを書くことが出来るわけです。
二番目のパラメーターのresultCodeはActivityが返す整数型のコードです。
呼び出されたActivityは setResilt(int resultCode) か setResult(int resultCode,
intent data) をつかって
呼び出し元のActivityにresultCodeを知らせます。例えば
RESULT_OK(-1)でActivityが正常終了したとか
RESULT_CANCELED(0)でActivityがキャンセルされたとか。
呼び出すActivityと呼び出されるActivityのお約束をしておけば整数の値を割り振っておけば
このコードだけで複数の状態を返すことも出来ます。
Activityの状態を知りたいだけならresultCodeを見れば良いのですけど、Activityが何か値を帰す場合、
特に整数だけで表せずに、文字列とかその他のものを返したいときには
三番目のパラメーターのintent dataが使用されます。
呼び出されたActivityはsetResult(int resultCode, intent data)を使用してintentとして値を返し、
onActivityResultで受け取れるわけです。
ダイアラーを呼び出した結果のresultCodeが通話に成功した場合、話し中だった場合などで異なるコードが
帰ってきたり、なにかintentが付加されていたりはしないかってところを期待したわけですけど。
http://developer.android.com/intl/ja/reference/android/content/Intent.html#ACTION_CALL
であっさりと
Output:no
となってますね(汗
onActivityResultが呼び出されない限りは、dialerがなにか仕事をしているので、呼び出し元Activityとしては
通話中/呼び出し中であることが判断できて、戻ってきた所で、
かけた電話番号でコンテンツプロバイダで通話履歴を調べて通話の結果を調べる…という手段となりますかね。
あまり、答にはなっていなくてすみません。
2011年12月15日21:52 And-Y <yumeo...@yahoo.co.jp>:
ちょっと試してみましたが、CALLのresultは通話が成功しても失敗しても 0 が返ってきて data も添付されていませんでした。
やはり通話アプリが終了しresultが返ってきた段階で、呼び出し番号の通話記録を取り出し、その最新が通話時間0秒か否かで
判断するしかないかもしれません。通話時間が0秒出なければ、いちおうつながったということで
(コール中にオンフックしても0秒ですけど通話としての意味は無いということで話中と同じ扱いでよいかと)
しつれいたしました
2011年12月15日22:54 田代透 <toru...@gmail.com>:
TelephonyManager tm =
(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener psListener = new PhoneStateListener() {
public void onCallStateChanged(int state, String number) {
switch(state) {
case TelephonyManager.CALL_STATE_RINGING://鳴っている状態
break;
case TelephonyManager.CALL_STATE_OFFHOOK://電話に出た
break;
case TelephonyManager.CALL_STATE_IDLE://通話終了
break;
}
}
};
tm.listen(psListener, PhoneStateListener.LISTEN_CALL_STATE);
アルゴロード
色々とお骨折りいただき感謝いたします
Activityのイベントこれだけ書込みして頂くと良く理解できそうです時間をかけて
1行1行読み解いてみたいと思います
>あー、的外れな説明をしてしまったようで申し訳ありません。
いえとんでもありませんこれから先私にはすごく重要になる事ばかりです
だけど終了イベントでも時間差攻撃すれば話中が確認できそうだと言う事は捨てがたいです^^
でもやはり現在進行形の相手が応答した場合のイベントは難しいのでしょうかね?
電話が終了した上で履歴で成功してたかいなかをさぐるしかないのかな?てそんな感じです
こうやってサンプルコードを提示して頂くとすごく嬉しいです^^
相手からかかってきた場合の自分の状態
CALL_STATE_RINGING://鳴っている状態
CALL_STATE_OFFHOOK://電話に出た
CALL_STATE_IDLE: //通話終了
この3つにつきましては、こちらに質問する前に確認していました
CALL_STATE_OFFHOOK://自分が電話に出た
このイベントに加えて
CALL_****:// こちらから電話して相手が応答した
のイベントが欲しくて質問をした次第でありますが
やまだ様のコメントでもしかしてと想い
重複とEclipsが
DATA_ACTIVITY_IN:
DATA_ACTIVITY_NONE:
DATA_ACTIVITY_OUT:
などと教えてくれてるので重複しないものを集めてやってみてます^^
なんかあればいいな?て感じです^^
結果が出るまでもう少し時間かかりそうです
ありがとうございます^^ おぼろげですが応答イベントはもしかして無いのかな?
て頭をよぎります