마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

알람과 문자전송에 대해서 질문이 있어요!

0 추천
예전에 진행했던 어플 개발을 다시 해보려고 하는데요..

 

알람이 울리고, 0~10초 까지 아무런 액션이 없다면 문자를 자동으로 전송하게 하는거고, 0~10초 사이에 액션(터치로 했어요)이 있다면 그냥 알람이 종료 되게끔

하려고 하는데... 알고리즘 짜는데 굉장히 헷갈려요

 

0초-----------------------------10초
                  ^   사이에 액션 있다면 알람 끔  (10초까지 아무액션 없다면 문자전송)
  

우선 getcurrentposition으로 음악파일 현재값을 가져와서..하려고하는데

어떻게 하면 좋을까요? ㅠㅠ

while문으로 해야하는지.. 아니면 if-else 로 해야하는지..간단해보이는데

제 머리속에서는 도저히 정리가 안되서요ㅠㅠ 힌트라도 도와주시면 감사하겠습니다!

 

 

아래는 엉터리 코드 입니다 (1년도 넘은..ㅠㅠ)

package com.andro;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class AlarmShowActivity extends Activity implements OnClickListener {
 TextView textViewAlarmedTime;
 MediaPlayer mp;
 EditText txtReceiver;
 EditText txtMessage;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.alarm_show);
  
  textViewAlarmedTime = (TextView)findViewById(R.id.textViewAlarmedTime);
  txtReceiver = (EditText)findViewById(R.id.edit_receiver);
  txtMessage = (EditText)findViewById(R.id.edit_message);
  
  Intent intent = getIntent();
  
  String time = intent.getStringExtra("time");
  
  // int reqCode = intent.getIntExtra("reqCode", 0);
  
  textViewAlarmedTime.setText(time + " 입니다." +"\n일어나세요^_^");
  
  mp = MediaPlayer.create(this, R.drawable.alarmsong);
  mp.setLooping(false);
  mp.start();

  
 
  /** 알람설정 **/
  if(mp.getCurrentPosition() > 10000) // 알람음 재생이 10초가 넘어갈 경우 => 문자전송.
  {

   String str_receiver = txtReceiver.getText().toString();
   String str_message = txtMessage.getText().toString();  
 
   //if(str_receiver.length()>0 && str_message.length()>0)
   sendSMS(str_receiver, str_message); // 지정해 놓은 번호로 문자전송  

  }

  else //기다리다 =>클릭하면 멈춤.
  {
   textViewAlarmedTime.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
     mp.pause(); // 알람음이 멈춤
     Intent i = new Intent(AlarmShowActivity.this, SubMainActivity.class);
     startActivity(i);
 
    }
   });
  }

  
 
  
 }//protected void onCreate(Bundle savedInstanceState)의 끝
  
  
  
   

 /** 문자전송: 시작 **/
 public void sendSMS(String phonenumber, String message) {
  PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(this, MainActivity.class), 0);               
    
  SmsManager sms = SmsManager.getDefault();
     sms.sendTextMessage(phonenumber, null, message, pi, null); // 문자를 전송함       
 }
 /** 문자전송: 끝 **/

 @Override
 public void onClick(View v) {
  finish();
 }
}
익명사용자 님이 2014년 5월 30일 질문

1개의 답변

+2 추천
어렵게 가셨습니다~~!

쉽게 생각하세요~!

하나하나 스탭을 밟아 드리지요~!

1. 알람이 울린다~!

1-1. 10초후에 문자를 날리도록 핸들러를 등록 한다~!

2.클릭이 됨과 동시에 알림음악을 중지 시킨다~!

2-1. 10초후에 문자를 날리라고 한 핸들러를 중지 시킨다~!

1과1-1, 2와2-1은 동시에 이루어져야 겠지요?

이처럼 생각을 조금만 바꾸어도 참 쉬워 집니다~!

10초후에 문자를 보내는게 아니라 10초후에 문자를 보내지만 일정조건이 있으면 취소한다~!

같은 말이지만 다른.... ㅋ

 

핸들러만 잘써도 당신은??? 스케쥴러 고수 우후훗~!
ThisPlus (46,920 포인트) 님이 2014년 5월 30일 답변
...