❶ 手機里沒有ppp撥號,是因為這個功能給別的模式取代定在別的地方打開。可不可以下載軟體設置一個OPP
點對點協議(PPP)為在點對點連接上傳輸多協議數據包提供了一個標准方法。PPP 最初設計是為兩個對等節點之間的 IP 流量傳輸提供一種封裝協議。在 TCP-IP 協議集中它是一種用來同步調制連接的數據鏈路層協議(OSI 模式中的第二層),替代了原來非標準的第二層協議,即 SLIP。除了 IP 以外 PPP 還可以攜帶其它協議,包括 DECnet 和 Novell 的 Internet 網包交換(IPX)。
PPP 主要由以下幾部分組成:
封裝:一種封裝多協議數據報的方法。PPP 封裝提供了不同網路層協議同時在同一鏈路傳輸的多路復用技術。PPP 封裝精心設計,能保持對大多數常用硬體的兼容性。克服了SLIP不足之處的一種多用途、點到點協議,它提供的WAN數據鏈接封裝服務類似於LAN所提供的封閉服務。所以,PPP不僅僅提供幀定界,而且提供協議標識和位級完整性檢查服務。
鏈路控制協議:PPP 提供的 LCP 功能全面,適用於大多數環境。LCP 用於就封裝格式選項自動達成一致,處理數據包大小限制,探測環路鏈路和其他普通的配置錯誤,以及終止鏈路。LCP 提供的其他可選功能有:認證鏈路中對等單元的身份,決定鏈路功能正常或鏈路失敗情況。
網路控制協議:一種擴展鏈路控制協議,用於建立、配置、測試和管理數據鏈路連接。
配置:使用鏈路控制協議的簡單和自製機制。該機制也應用於其它控制協議,例如:網路控制協議(NCP)。
為了建立點對點鏈路通信,PPP 鏈路的每一端,必須首先發送 LCP 包以便設定和測試數據鏈路。在鏈路建立,LCP 所需的可選功能被選定之後,PPP 必須發送 NCP 包以便選擇和設定一個或更多的網路層協議。一旦每個被選擇的網路層協議都被設定好了,來自每個網路層協議的數據報就能在鏈路上發送了。
鏈路將保持通信設定不變,直到有 LCP 和 NCP 數據包關閉鏈路,或者是發生一些外部事件的時候(如,休止狀態的定時器期滿或者網路管理員干涉)。
應 用:假設同樣是在Windows 98,並且已經創建好「撥號連接」。那麼可以通過下面的方法來設置PPP協議:首先,打開「撥號連接」屬性,同樣選擇「伺服器類型」選項卡;然後,選擇默認的「PPP:Internet,Windows NT Server,Windows 98」,在高級選項中可以設置該協議其它功能選項;最後,單擊「確定」按鈕即可。
②即「公私合作」(Public-Private-Partnership),是指政府提供公共服務的一種方式。在這種機制下,對社會需要的特定公共服務,政府不再直接投資興辦公共項目,而是鼓勵企業投資興辦(或企業與政府合資興辦)項目並提供公共服務,政府根據服務的數量與質量進行購買。
PPP工作流程:
當用戶撥號接入 ISP 時,路由器的數據機對撥號做出確認,並建立一條物理連接。
PC 機向路由器發送一系列的 LCP 分組(封裝成多個 PPP 幀)。
這些分組及其響應選擇一些 PPP 參數,和進行網路層配置,NCP 給新接入的 PC機分配一個臨時的 IP 地址,使 PC 機成為網際網路上的一個主機。
通信完畢時,NCP 釋放網路層連接,收回原來分配出去的 IP 地址。接著,LCP 釋放數據鏈路層連接。最後釋放的是物理層的連接。
PPP和HDLC之間最主要的區別是,PPP是面向字元的,HDLC是面向位的。
③PPP在GPS應用領域代表著「精密單點定位(Precise Point Positioning)」,精密單點定位是利用國際GPS服務機構IGS提供的或自己計算的GPS精密星歷和精密鍾差文件,以無電離層影響的載波相位和偽距組合觀測值為觀測資料,對測站的位置、接收機鍾差、對流層天頂延遲以及組合後的相位模糊度等參數進行估計。用戶通過一台含雙頻雙碼GPS接收機就可以實現在數千平方公里乃至全球范圍內的高精度定位。它的特點在於各站的解算相互獨立,計算量遠遠小於一般的相對定位。
PPP的特點:
①主要觀測值為載波相位
②採用精密的衛星軌道和鍾數據
③採用復雜的模型
PPP定位精度:亞分米級。
PPP用途:全球高精度測量,衛星定軌。
ppp
在RFC 1661中提供詳細的PPP規范
PPP是指政府與民營機構(或更廣義點,任何國營/民營/外商法人機構,下同)簽訂長期合作協議,授權民營機構代替政府建設、運營或管理基礎設施(如道路、橋梁、電廠、水廠等)或其他公共服務設施(如醫院、學校、監獄、警崗等)並向公眾提供公共服務,主要有主要有垂直和水平兩種方式;而BOT是指政府通過特許權協議,授權民營機構進行項目(主要是基礎設施和自然資源開發)的融資、設計、建造、經營和維護,BOT主要有BOT、BOOT和BOO三種基本形式和十多種演變形式,如BT、TOT等。
由定義可見,PPP本質上和BOT差不多,都屬於狹義項目融資(Project Financing),即「通過項目來融資——通過該項目的期望收益來融資的活動」,而非廣義項目融資,即「為項目融資——為特定項目的建設、收購以及債務重組進行的融資活動」。從金融學而言,所謂狹義項目融資,是指債權人(銀行)對借款人(項目公司)抵押資產以外資產沒有追索權或僅有有限追索權的融資活動,而廣義項目融資,往往是有100%追索權的,即債權人對借款人抵押資產以外的資產也有追索權。
PPP和BOT項目對民營機構的補償都是通過授權民營機構在規定的特許期內向項目的使用者收取費用,由此回收項目的投資、經營和維護等成本,並獲得合理的回報(即建成項目投入使用所產生的現金流量成為支付經營成本、償還貸款和提供投資回報等的唯一來源),特許期滿後項目將移交回政府(也有不移交的,如BOO)。但PPP的含義更為廣泛,反映更為廣義的公私合夥/合作關系,除了基礎設施和自然資源開發,還可包括公共服務設施和國營機構的私有化,等等,因此,近年來國際上越來越多採用PPP這個詞,以取代BOT。
BT屬於BOT的一種演變形式,政府在項目建成後從民營機構中購回項目(可一次支付也可分期支付);與政府借貸不同,政府用於購買項目的資金往往是事後支付(可通過財政撥款,但更多的是通過運營項目收費來支付);民營機構用於建設的資金可自己出但更多的是獲取銀行的有限追索權貸款。筆者認為,如果建設資金不是從銀行借的有限追索權貸款的話,BT實際上是「墊資承包」或「延期付款」,已經有點超出狹義項目融資的原有含義范疇了。
政府在PPP和BOT中的責任本質上沒有什麼不同,但細節上有,如PPP項目中,民營機構做不了的或不願做的,由政府來做,其餘全由民營機構來做,政府只起監管的作用;而BOT項目中,絕大多數工作由民營機構來做,政府則提供支持和擔保。但無論什麼方式,都要合理分擔項目風險,從而提高項目的投資、建設、運營和管理效率,這是PPP或BOT的最重要目標。
❷ android實現撥號功能
請檢查你這個activity的permission,有沒有加上以下的設置。
在AndroidManifest.xml裡面添加。
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CALL_PRIVILEGED" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
另外幫你貼下android自帶撥號程序的核心部分,請自己參照下吧~~
public class OutgoingCallBroadcaster extends Activity {
private static final String PERMISSION = android.Manifest.permission.PROCESS_OUTGOING_CALLS;
private static final String TAG = "OutgoingCallBroadcaster";
private static final boolean LOGV = true;//Config.LOGV;
public static final String EXTRA_ALREADY_CALLED = "android.phone.extra.ALREADY_CALLED";
public static final String EXTRA_ORIGINAL_URI = "android.phone.extra.ORIGINAL_URI";
private Phone mPhone;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
mPhone = PhoneApp.getInstance().phone;
Intent intent = getIntent();
if (LOGV) Log.v(TAG, "onCreate: Got intent " + intent + ".");
String action = intent.getAction();
String number = PhoneNumberUtils.getNumberFromIntent(intent, this);
if (number != null) {
number = PhoneNumberUtils.stripSeparators(number);
}
final boolean emergencyNumber =
(number != null) && PhoneNumberUtils.isEmergencyNumber(number);
boolean callNow;
if (getClass().getName().equals(intent.getComponent().getClassName())) {
// If we were launched directly from the OutgoingCallBroadcaster,
// not one of its more privileged aliases, then make sure that
// only the non-privileged actions are allowed.
if (!Intent.ACTION_CALL.equals(intent.getAction())) {
Log.w(TAG, "Attempt to deliver non-CALL action; forcing to CALL");
intent.setAction(Intent.ACTION_CALL);
}
}
/* Change CALL_PRIVILEGED into CALL or CALL_EMERGENCY as needed. */
if (Intent.ACTION_CALL_PRIVILEGED.equals(action)) {
action = emergencyNumber
? Intent.ACTION_CALL_EMERGENCY
: Intent.ACTION_CALL;
intent.setAction(action);
}
if (Intent.ACTION_CALL.equals(action)) {
if (emergencyNumber) {
finish();
return;
}
callNow = false;
} else if (Intent.ACTION_CALL_EMERGENCY.equals(action)) {
if (!emergencyNumber) {
finish();
return;
}
callNow = true;
} else {
finish();
return;
}
// Make sure the screen is turned on. This is probably the right
// thing to do, and more importantly it works around an issue in the
// activity manager where we will not launch activities consistently
// when the screen is off (since it is trying to keep them paused
// and has... issues).
//
// Also, this ensures the device stays awake while doing the following
// broadcast; technically we should be holding a wake lock here
// as well.
PhoneApp.getInstance().wakeUpScreen();
/* If number is null, we're probably trying to call a non-existent voicemail number or
* something else fishy. Whatever the problem, there's no number, so there's no point
* in allowing apps to modify the number. */
if (number == null || TextUtils.isEmpty(number)) callNow = true;
if (callNow) {
intent.setClass(this, InCallScreen.class);
startActivity(intent);
}
Intent broadcastIntent = new Intent(Intent.ACTION_NEW_OUTGOING_CALL);
if (number != null) broadcastIntent.putExtra(Intent.EXTRA_PHONE_NUMBER, number);
broadcastIntent.putExtra(EXTRA_ALREADY_CALLED, callNow);
broadcastIntent.putExtra(EXTRA_ORIGINAL_URI, intent.getData().toString());
broadcastIntent.putExtra(EXTRA_INTENT_FROM_BT_HANDSFREE,
intent.getBooleanExtra(OutgoingCallBroadcaster.EXTRA_INTENT_FROM_BT_HANDSFREE, false));
if (LOGV) Log.v(TAG, "Broadcasting intent " + broadcastIntent + ".");
sendOrderedBroadcast(broadcastIntent, PERMISSION, null, null,
Activity.RESULT_OK, number, null);
finish();
}
}