blob: b0c52405997dbf5b0abc84f6926cb445c851f298 [file] [log] [blame]
/*
* Copyright (C) 2015 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.googlecode.android_scripting.facade;
import android.media.AudioManager;
import android.media.ToneGenerator;
import com.googlecode.android_scripting.jsonrpc.RpcReceiver;
import com.googlecode.android_scripting.rpc.Rpc;
import com.googlecode.android_scripting.rpc.RpcDefault;
import com.googlecode.android_scripting.rpc.RpcParameter;
/**
* Generate DTMF tones.
*
*/
public class ToneGeneratorFacade extends RpcReceiver {
private final ToneGenerator mToneGenerator;
public ToneGeneratorFacade(FacadeManager manager) {
super(manager);
mToneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, 100);
}
@Rpc(description = "Generate DTMF tones for the given phone number.")
public void generateDtmfTones(
@RpcParameter(name = "phoneNumber") String phoneNumber,
@RpcParameter(name = "toneDuration", description = "duration of each tone in milliseconds") @RpcDefault("100") Integer toneDuration)
throws InterruptedException {
try {
for (int i = 0; i < phoneNumber.length(); i++) {
switch (phoneNumber.charAt(i)) {
case '0':
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_0);
Thread.sleep(toneDuration);
break;
case '1':
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_1);
Thread.sleep(toneDuration);
break;
case '2':
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_2);
Thread.sleep(toneDuration);
break;
case '3':
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_3);
Thread.sleep(toneDuration);
break;
case '4':
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_4);
Thread.sleep(toneDuration);
break;
case '5':
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_5);
Thread.sleep(toneDuration);
break;
case '6':
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_6);
Thread.sleep(toneDuration);
break;
case '7':
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_7);
Thread.sleep(toneDuration);
break;
case '8':
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_8);
Thread.sleep(toneDuration);
break;
case '9':
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_9);
Thread.sleep(toneDuration);
break;
case '*':
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_S);
Thread.sleep(toneDuration);
break;
case '#':
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_P);
Thread.sleep(toneDuration);
break;
default:
throw new RuntimeException("Cannot generate tone for '" + phoneNumber.charAt(i) + "'");
}
}
} finally {
mToneGenerator.stopTone();
}
}
@Override
public void shutdown() {
}
}