当前位置: 首页>>代码示例>>Java>>正文


Java SameThreadException类代码示例

本文整理汇总了Java中com.csipsimple.service.SipService.SameThreadException的典型用法代码示例。如果您正苦于以下问题:Java SameThreadException类的具体用法?Java SameThreadException怎么用?Java SameThreadException使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


SameThreadException类属于com.csipsimple.service.SipService包,在下文中一共展示了SameThreadException类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: addBuddiesForAccount

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
/**
 * Add buddies for a given account
 * @param acc
 */
private synchronized void addBuddiesForAccount(SipProfile acc) {
    // Get buddies uris for this account
    final List<String> toAdd = getBuddiesForAccount(acc);

    if (toAdd.size() > 0 && service != null) {
        service.getExecutor().execute(new SipRunnable() {

            @Override
            protected void doRun() throws SameThreadException {

                for (String csipUri : toAdd) {
                    service.addBuddy("sip:" + csipUri);
                }
            }
        });
    }
    addedAccounts.add(acc);
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:23,代码来源:PresenceManager.java

示例2: SimpleWavRecorderHandler

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
public SimpleWavRecorderHandler(SipCallSession callInfo, File recordFolder, int way)
        throws SameThreadException, IOException {
    this.way = way;
    this.callInfo = callInfo;

    File targetFile = getRecordFile(recordFolder, callInfo.getRemoteContact(), way);
    if (targetFile == null) {
        throw new IOException("No target file possible");
    }
    recordingPath = targetFile.getAbsolutePath();
    pj_str_t file = pjsua.pj_str_copy(recordingPath);
    int[] rcId = new int[1];
    int status = pjsua.recorder_create(file, 0, (byte[]) null, 0, 0, rcId);
    if (status == pjsua.PJ_SUCCESS) {
        recorderId = rcId[0];
    } else {
        throw new IOException("Pjsip not able to write the file");
    }
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:20,代码来源:SimpleWavRecorderHandler.java

示例3: sipStop

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
/**
 * Stop sip service
 * 
 * @return true if stop has been performed
 */
public boolean sipStop() throws SameThreadException {
    Log.d(THIS_FILE, ">> SIP STOP <<");

    if (getActiveCallInProgress() != null) {
        Log.e(THIS_FILE, "We have a call in progress... DO NOT STOP !!!");
        // TODO : queue quit on end call;
        return false;
    }

    if (service.notificationManager != null) {
        service.notificationManager.cancelRegisters();
    }
    if (created) {
        cleanPjsua();
    }
    if (tasksTimer != null) {
        tasksTimer.cancel();
        tasksTimer.purge();
        tasksTimer = null;
    }
    return true;
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:28,代码来源:PjSipService.java

示例4: callAnswer

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
/**
 * Answer a call
 * 
 * @param callId the id of the call to answer to
 * @param code the status code to send in the response
 * @return
 */
public int callAnswer(int callId, int code) throws SameThreadException {

    if (created) {

        pjsua_call_setting cs = new pjsua_call_setting();
        pjsua.call_setting_default(cs);
        cs.setAud_cnt(1);
        cs.setVid_cnt(prefsWrapper.getPreferenceBooleanValue(SipConfigManager.USE_VIDEO) ? 1
                : 0);
        cs.setFlag(0);
        return pjsua.call_answer2(callId, cs, code, null, null);
        // return pjsua.call_answer(callId, code, null, null);
    }
    return -1;
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:23,代码来源:PjSipService.java

示例5: sendDtmf

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
/**
 * Send a dtmf signal to a call
 * 
 * @param callId the call to send the signal
 * @param keyCode the keyCode to send (android style)
 * @return
 */
public int sendDtmf(int callId, int keyCode) throws SameThreadException {
    if (!created) {
        return -1;
    }
    String keyPressed = "";
    // Since some device (xoom...) are apparently buggy with key character
    // map loading...
    // we have to do crappy thing here
    if (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) {
        keyPressed = Integer.toString(keyCode - KeyEvent.KEYCODE_0);
    } else if (keyCode == KeyEvent.KEYCODE_POUND) {
        keyPressed = "#";
    } else if (keyCode == KeyEvent.KEYCODE_STAR) {
        keyPressed = "*";
    } else {
        // Fallback... should never be there if using visible dialpad, but
        // possible using keyboard
        KeyCharacterMap km = KeyCharacterMap.load(KeyCharacterMap.NUMERIC);
        keyPressed = Integer.toString(km.getNumber(keyCode));
    }
    return sendDtmf(callId, keyPressed);
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:30,代码来源:PjSipService.java

示例6: sendMessage

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
/**
 * Send sms/message using SIP server
 */
public ToCall sendMessage(String callee, String message, long accountId)
        throws SameThreadException {
    if (!created) {
        return null;
    }

    ToCall toCall = sanitizeSipUri(callee, accountId);
    if (toCall != null) {

        pj_str_t uri = pjsua.pj_str_copy(toCall.getCallee());
        pj_str_t text = pjsua.pj_str_copy(message);
        /*
         * Log.d(THIS_FILE, "get for outgoing"); int finalAccountId =
         * accountId; if (accountId == -1) { finalAccountId =
         * pjsua.acc_find_for_outgoing(uri); }
         */
        // Nothing to do with this values
        byte[] userData = new byte[1];

        int status = pjsua.im_send(toCall.getPjsipAccountId(), uri, null, text, null, userData);
        return (status == pjsuaConstants.PJ_SUCCESS) ? toCall : null;
    }
    return toCall;
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:28,代码来源:PjSipService.java

示例7: addBuddy

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
/**
 * Add a buddy to buddies list
 * 
 * @param buddyUri the uri to register to
 * @throws SameThreadException
 */
public int addBuddy(String buddyUri) throws SameThreadException {
    if (!created) {
        return -1;
    }
    int[] p_buddy_id = new int[1];

    pjsua_buddy_config buddy_cfg = new pjsua_buddy_config();
    pjsua.buddy_config_default(buddy_cfg);
    buddy_cfg.setSubscribe(1);
    buddy_cfg.setUri(pjsua.pj_str_copy(buddyUri));

    pjsua.buddy_add(buddy_cfg, p_buddy_id);

    return p_buddy_id[0];
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:22,代码来源:PjSipService.java

示例8: setPresence

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
/**
 * Set self presence
 * 
 * @param presence the SipManager.SipPresence
 * @param statusText the text of the presence
 * @throws SameThreadException
 */
public void setPresence(PresenceStatus presence, String statusText, long accountId)
        throws SameThreadException {
    if (!created) {
        Log.e(THIS_FILE, "PJSIP is not started here, nothing can be done");
        return;
    }
    SipProfile account = new SipProfile();
    account.id = accountId;
    SipProfileState profileState = getProfileState(account);

    // In case of already added, we have to act finely
    // If it's local we can just consider that we have to re-add account
    // since it will actually just touch the account with a modify
    if (profileState != null && profileState.isAddedToStack()) {
        // The account is already there in accounts list
        pjsua.acc_set_online_status(profileState.getPjsuaId(), getOnlineForStatus(presence));
    }

}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:27,代码来源:PjSipService.java

示例9: stopRecording

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
/**
 * Stop recording of a call.
 * 
 * @param callId the call to stop record for.
 * @throws SameThreadException virtual exception to be sure we are calling
 *             this from correct thread
 */
public void stopRecording(int callId) throws SameThreadException {
    if (!created) {
        return;
    }
    List<IRecorderHandler> recoders = callRecorders.get(callId, null);
    if (recoders != null) {
        for (IRecorderHandler recoder : recoders) {
            recoder.stopRecording();
            // Broadcast to other apps the a new sip record has been done
            SipCallSession callInfo = getPublicCallInfo(callId);
            Intent it = new Intent(SipManager.ACTION_SIP_CALL_RECORDED);
            it.putExtra(SipManager.EXTRA_CALL_INFO, callInfo);
            recoder.fillBroadcastWithInfo(it);
            service.sendBroadcast(it, SipManager.PERMISSION_USE_SIP);
        }
        // In first case we drop everything
        callRecorders.delete(callId);
        userAgentReceiver.updateRecordingStatus(callId, true, false);
    }
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:28,代码来源:PjSipService.java

示例10: onReceive

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
@Override
public void onReceive(final Context context, final Intent intent) {
    // Run the handler in SipServiceExecutor to be protected by wake lock
    service.getExecutor().execute(new SipRunnable()  {
        public void doRun() throws SameThreadException {
            onReceiveInternal(context, intent, compatIsInitialStickyBroadcast(intent));
        }
    });
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:10,代码来源:DynamicReceiver4.java

示例11: onConnectivityChanged

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
/**
 * Treat the fact that the connectivity has changed
 * @param info Network info
 * @param incomingOnly start only if for outgoing 
 * @throws SameThreadException
 */
private void onConnectivityChanged(NetworkInfo info, boolean isSticky) throws SameThreadException {
    // We only care about the default network, and getActiveNetworkInfo()
    // is the only way to distinguish them. However, as broadcasts are
    // delivered asynchronously, we might miss DISCONNECTED events from
    // getActiveNetworkInfo(), which is critical to our SIP stack. To
    // solve this, if it is a DISCONNECTED event to our current network,
    // respect it. Otherwise get a new one from getActiveNetworkInfo().
    if (info == null || info.isConnected() ||
            !info.getTypeName().equals(mNetworkType)) {
        ConnectivityManager cm = (ConnectivityManager) service.getSystemService(Context.CONNECTIVITY_SERVICE);
        info = cm.getActiveNetworkInfo();
    }

    boolean connected = (info != null && info.isConnected() && service.isConnectivityValid());
    String networkType = connected ? info.getTypeName() : "null";
    String currentRoutes = dumpRoutes();
    String oldRoutes;
    synchronized (mRoutes) {
        oldRoutes = mRoutes;
    }
    
    // Ignore the event if the current active network is not changed.
    if (connected == mConnected && networkType.equals(mNetworkType) && currentRoutes.equals(oldRoutes)) {
        return;
    }
    if(Log.getLogLevel() >= 4) {
        if(!networkType.equals(mNetworkType)) {
            Log.d(THIS_FILE, "onConnectivityChanged(): " + mNetworkType +
                        " -> " + networkType);
        }else {
            Log.d(THIS_FILE, "Route changed : "+ mRoutes+" -> "+currentRoutes);
        }
    }
    // Now process the event
    synchronized (mRoutes) {
        mRoutes = currentRoutes;
    }
    mConnected = connected;
    mNetworkType = networkType;

    if(!isSticky) {
        if (connected) {
            service.restartSipStack();
        } else {
            Log.d(THIS_FILE, "We are not connected, stop");
            if(service.stopSipStack()) {
                service.stopSelf();
            }
        }
    }
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:58,代码来源:DynamicReceiver4.java

示例12: startMonitoring

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
public void startMonitoring() {
    int pollingIntervalMin = service.getPrefs().getPreferenceIntegerValue(SipConfigManager.NETWORK_ROUTES_POLLING);

    Log.d(THIS_FILE, "Start monitoring of route file ? " + pollingIntervalMin);
    if(pollingIntervalMin > 0) {
        pollingTimer = new Timer("RouteChangeMonitor", true);
        pollingTimer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                String currentRoutes = dumpRoutes();
                String oldRoutes;
                synchronized (mRoutes) {
                    oldRoutes = mRoutes;
                }
                if(!currentRoutes.equalsIgnoreCase(oldRoutes)) {
                    Log.d(THIS_FILE, "Route changed");
                    // Run the handler in SipServiceExecutor to be protected by wake lock
                    service.getExecutor().execute(new SipRunnable()  {
                        public void doRun() throws SameThreadException {
                            onConnectivityChanged(null, false);
                        }
                    });
                }
            }
        }, new Date(), pollingIntervalMin * 60 * 1000);
    }
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:28,代码来源:DynamicReceiver4.java

示例13: setSpeakerphoneOn

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
public void setSpeakerphoneOn(boolean on) throws SameThreadException {
	if(service != null && restartAudioWhenRoutingChange && !ringer.isRinging()) {
		service.setNoSnd();
		userWantSpeaker = on;
		service.setSnd();
	}else {
           userWantSpeaker = on;
	    audioManager.setSpeakerphoneOn(on);
	}
	broadcastMediaChanged();
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:12,代码来源:MediaManager.java

示例14: setBluetoothOn

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
public void setBluetoothOn(boolean on) throws SameThreadException {
	Log.d(THIS_FILE, "Set BT "+on);
	if(service != null && restartAudioWhenRoutingChange && !ringer.isRinging()) {
	    service.setNoSnd();
		userWantBluetooth = on;
		service.setSnd();
	}else {
           userWantBluetooth = on;
	    bluetoothWrapper.setBluetoothOn(on);
	}
	broadcastMediaChanged();
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:13,代码来源:MediaManager.java

示例15: setSoftwareVolume

import com.csipsimple.service.SipService.SameThreadException; //导入依赖的package包/类
/**
 * Change the audio volume amplification according to the fact we are using bluetooth
 */
public void setSoftwareVolume(){
	
	if(service != null) {
		final boolean useBT = (bluetoothWrapper != null && bluetoothWrapper.isBluetoothOn());
		
		String speaker_key = useBT ? SipConfigManager.SND_BT_SPEAKER_LEVEL : SipConfigManager.SND_SPEAKER_LEVEL;
		String mic_key = useBT ? SipConfigManager.SND_BT_MIC_LEVEL : SipConfigManager.SND_MIC_LEVEL;
		
		final float speakVolume = service.getPrefs().getPreferenceFloatValue(speaker_key);
		final float micVolume = userWantMicrophoneMute? 0 : service.getPrefs().getPreferenceFloatValue(mic_key);
		
		service.getExecutor().execute(new SipRunnable() {
			
			@Override
			protected void doRun() throws SameThreadException {
				service.confAdjustTxLevel(speakVolume);
				service.confAdjustRxLevel(micVolume);
				
				// Force the BT mode to normal
				if(useBT) {
					audioManager.setMode(AudioManager.MODE_NORMAL);
				}
			}
		});
	}
}
 
开发者ID:treasure-lau,项目名称:CSipSimple,代码行数:30,代码来源:MediaManager.java


注:本文中的com.csipsimple.service.SipService.SameThreadException类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。